Re: [PATCH 1/8] apparmor: just use vfs_kern_mount to make .null
Emanuele Giuseppe Esposito <[email protected]>
| Newsgroups | org.kernel.vger.autofs,org.freedesktop.lists.dri-devel,org.kvack.linux-mm,org.ozlabs.lists.linuxppc-dev |
|---|---|
| Message-ID | <[email protected]> |
On 4/16/20 8:44 AM, Luis Chamberlain wrote: > On Tue, Apr 14, 2020 at 02:42:55PM +0200, Emanuele Giuseppe Esposito wrote: >> aa_mk_null_file is using simple_pin_fs/simple_release_fs with local >> variables as arguments, for what would amount to a simple >> vfs_kern_mount/mntput pair if everything was inlined. Just use >> the normal filesystem API since the reference counting is not needed >> here. > > *Why* is refcounting not needed here? The refcount is a local variable and is always 0 on entry and exit, so it is not necessary to have refcounting across function invocations, such as what simple_pin_fs and simple_release_fs provide. Thank you, Emanuele > > Luis > >> >> Signed-off-by: Emanuele Giuseppe Esposito <[email protected]> >> --- >> security/apparmor/apparmorfs.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c >> index 280741fc0f5f..828bb1eb77ea 100644 >> --- a/security/apparmor/apparmorfs.c >> +++ b/security/apparmor/apparmorfs.c >> @@ -2525,14 +2525,14 @@ struct path aa_null; >> >> static int aa_mk_null_file(struct dentry *parent) >> { >> - struct vfsmount *mount = NULL; >> + struct file_system_type *type = parent->d_sb->s_type; >> + struct vfsmount *mount; >> struct dentry *dentry; >> struct inode *inode; >> - int count = 0; >> - int error = simple_pin_fs(parent->d_sb->s_type, &mount, &count); >> >> - if (error) >> - return error; >> + mount = vfs_kern_mount(type, SB_KERNMOUNT, type->name, NULL); >> + if (IS_ERR(mount)) >> + return PTR_ERR(mount); >> >> inode_lock(d_inode(parent)); >> dentry = lookup_one_len(NULL_FILE_NAME, parent, strlen(NULL_FILE_NAME)); >> @@ -2561,7 +2561,7 @@ static int aa_mk_null_file(struct dentry *parent) >> dput(dentry); >> out: >> inode_unlock(d_inode(parent)); >> - simple_release_fs(&mount, &count); >> + mntput(mount); >> return error; >> } >> >> -- >> 2.25.2 >> >