Message ID | 20250407-work-anon_inode-v1-2-53a44c20d44e@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | fs: harden anon inodes | expand |
On Mon 07-04-25 11:54:16, Christian Brauner wrote: > So far pidfs did use it's own version. Just use the generic version. We > use our own wrappers because we're going to be implementing our own > retrieval properties soon. > > Signed-off-by: Christian Brauner <brauner@kernel.org> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/pidfs.c | 24 +----------------------- > 1 file changed, 1 insertion(+), 23 deletions(-) > > diff --git a/fs/pidfs.c b/fs/pidfs.c > index d64a4cbeb0da..809c3393b6a3 100644 > --- a/fs/pidfs.c > +++ b/fs/pidfs.c > @@ -572,33 +572,11 @@ static int pidfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, > return -EOPNOTSUPP; > } > > - > -/* > - * User space expects pidfs inodes to have no file type in st_mode. > - * > - * In particular, 'lsof' has this legacy logic: > - * > - * type = s->st_mode & S_IFMT; > - * switch (type) { > - * ... > - * case 0: > - * if (!strcmp(p, "anon_inode")) > - * Lf->ntype = Ntype = N_ANON_INODE; > - * > - * to detect our old anon_inode logic. > - * > - * Rather than mess with our internal sane inode data, just fix it > - * up here in getattr() by masking off the format bits. > - */ > static int pidfs_getattr(struct mnt_idmap *idmap, const struct path *path, > struct kstat *stat, u32 request_mask, > unsigned int query_flags) > { > - struct inode *inode = d_inode(path->dentry); > - > - generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); > - stat->mode &= ~S_IFMT; > - return 0; > + return anon_inode_getattr(idmap, path, stat, request_mask, query_flags); > } > > static const struct inode_operations pidfs_inode_operations = { > > -- > 2.47.2 >
diff --git a/fs/pidfs.c b/fs/pidfs.c index d64a4cbeb0da..809c3393b6a3 100644 --- a/fs/pidfs.c +++ b/fs/pidfs.c @@ -572,33 +572,11 @@ static int pidfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, return -EOPNOTSUPP; } - -/* - * User space expects pidfs inodes to have no file type in st_mode. - * - * In particular, 'lsof' has this legacy logic: - * - * type = s->st_mode & S_IFMT; - * switch (type) { - * ... - * case 0: - * if (!strcmp(p, "anon_inode")) - * Lf->ntype = Ntype = N_ANON_INODE; - * - * to detect our old anon_inode logic. - * - * Rather than mess with our internal sane inode data, just fix it - * up here in getattr() by masking off the format bits. - */ static int pidfs_getattr(struct mnt_idmap *idmap, const struct path *path, struct kstat *stat, u32 request_mask, unsigned int query_flags) { - struct inode *inode = d_inode(path->dentry); - - generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); - stat->mode &= ~S_IFMT; - return 0; + return anon_inode_getattr(idmap, path, stat, request_mask, query_flags); } static const struct inode_operations pidfs_inode_operations = {
So far pidfs did use it's own version. Just use the generic version. We use our own wrappers because we're going to be implementing our own retrieval properties soon. Signed-off-by: Christian Brauner <brauner@kernel.org> --- fs/pidfs.c | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-)