Simplify passing the count and mount to simple_pin_fs and
simple_release_fs by wrapping them in the simple_fs struct,
in preparation for adding more high level operations to
fs/libfs.c

There is no functional change intended.

Signed-off-by: Emanuele Giuseppe Esposito <eespo...@redhat.com>
---
 drivers/gpu/drm/drm_drv.c       | 11 ++++----
 drivers/misc/cxl/api.c          | 13 +++++-----
 drivers/scsi/cxlflash/ocxl_hw.c | 14 +++++-----
 fs/binfmt_misc.c                |  9 +++----
 fs/configfs/mount.c             | 10 +++-----
 fs/debugfs/inode.c              | 22 ++++++++--------
 fs/libfs.c                      | 45 +++++++++++++++++++++++++--------
 fs/tracefs/inode.c              | 18 ++++++-------
 include/linux/fs.h              | 10 ++++++--
 security/apparmor/apparmorfs.c  | 25 +++++++++---------
 security/inode.c                | 11 ++++----
 11 files changed, 103 insertions(+), 85 deletions(-)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 7b1a628d1f6e..e29424d64874 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -514,8 +514,7 @@ EXPORT_SYMBOL(drm_dev_unplug);
  * iput(), but this way you'd end up with a new vfsmount for each inode.
  */
 
-static int drm_fs_cnt;
-static struct vfsmount *drm_fs_mnt;
+static struct simple_fs drm_fs;
 
 static int drm_fs_init_fs_context(struct fs_context *fc)
 {
@@ -534,15 +533,15 @@ static struct inode *drm_fs_inode_new(void)
        struct inode *inode;
        int r;
 
-       r = simple_pin_fs(&drm_fs_type, &drm_fs_mnt, &drm_fs_cnt);
+       r = simple_pin_fs(&drm_fs, &drm_fs_type);
        if (r < 0) {
                DRM_ERROR("Cannot mount pseudo fs: %d\n", r);
                return ERR_PTR(r);
        }
 
-       inode = alloc_anon_inode(drm_fs_mnt->mnt_sb);
+       inode = alloc_anon_inode(drm_fs.mount->mnt_sb);
        if (IS_ERR(inode))
-               simple_release_fs(&drm_fs_mnt, &drm_fs_cnt);
+               simple_release_fs(&drm_fs);
 
        return inode;
 }
@@ -551,7 +550,7 @@ static void drm_fs_inode_free(struct inode *inode)
 {
        if (inode) {
                iput(inode);
-               simple_release_fs(&drm_fs_mnt, &drm_fs_cnt);
+               simple_release_fs(&drm_fs);
        }
 }
 
diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c
index b493de962153..67e4808bce49 100644
--- a/drivers/misc/cxl/api.c
+++ b/drivers/misc/cxl/api.c
@@ -31,8 +31,7 @@
 
 #define CXL_PSEUDO_FS_MAGIC    0x1697697f
 
-static int cxl_fs_cnt;
-static struct vfsmount *cxl_vfs_mount;
+static struct simple_fs cxl_fs;
 
 static int cxl_fs_init_fs_context(struct fs_context *fc)
 {
@@ -50,7 +49,7 @@ static struct file_system_type cxl_fs_type = {
 void cxl_release_mapping(struct cxl_context *ctx)
 {
        if (ctx->kernelapi && ctx->mapping)
-               simple_release_fs(&cxl_vfs_mount, &cxl_fs_cnt);
+               simple_release_fs(&cxl_fs);
 }
 
 static struct file *cxl_getfile(const char *name,
@@ -66,20 +65,20 @@ static struct file *cxl_getfile(const char *name,
        if (fops->owner && !try_module_get(fops->owner))
                return ERR_PTR(-ENOENT);
 
-       rc = simple_pin_fs(&cxl_fs_type, &cxl_vfs_mount, &cxl_fs_cnt);
+       rc = simple_pin_fs(&cxl_fs, &cxl_fs_type);
        if (rc < 0) {
                pr_err("Cannot mount cxl pseudo filesystem: %d\n", rc);
                file = ERR_PTR(rc);
                goto err_module;
        }
 
-       inode = alloc_anon_inode(cxl_vfs_mount->mnt_sb);
+       inode = alloc_anon_inode(cxl_fs.mount->mnt_sb);
        if (IS_ERR(inode)) {
                file = ERR_CAST(inode);
                goto err_fs;
        }
 
-       file = alloc_file_pseudo(inode, cxl_vfs_mount, name,
+       file = alloc_file_pseudo(inode, cxl_fs.mount, name,
                                 flags & (O_ACCMODE | O_NONBLOCK), fops);
        if (IS_ERR(file))
                goto err_inode;
@@ -91,7 +90,7 @@ static struct file *cxl_getfile(const char *name,
 err_inode:
        iput(inode);
 err_fs:
-       simple_release_fs(&cxl_vfs_mount, &cxl_fs_cnt);
+       simple_release_fs(&cxl_fs);
 err_module:
        module_put(fops->owner);
        return file;
diff --git a/drivers/scsi/cxlflash/ocxl_hw.c b/drivers/scsi/cxlflash/ocxl_hw.c
index 7018cd802569..7fa98dd4fa28 100644
--- a/drivers/scsi/cxlflash/ocxl_hw.c
+++ b/drivers/scsi/cxlflash/ocxl_hw.c
@@ -29,8 +29,7 @@
 
 #define OCXLFLASH_FS_MAGIC      0x1697698f
 
-static int ocxlflash_fs_cnt;
-static struct vfsmount *ocxlflash_vfs_mount;
+static struct simple_fs ocxlflash_fs;
 
 static int ocxlflash_fs_init_fs_context(struct fs_context *fc)
 {
@@ -51,7 +50,7 @@ static struct file_system_type ocxlflash_fs_type = {
 static void ocxlflash_release_mapping(struct ocxlflash_context *ctx)
 {
        if (ctx->mapping)
-               simple_release_fs(&ocxlflash_vfs_mount, &ocxlflash_fs_cnt);
+               simple_release_fs(&ocxlflash_fs);
        ctx->mapping = NULL;
 }
 
@@ -79,15 +78,14 @@ static struct file *ocxlflash_getfile(struct device *dev, 
const char *name,
                goto err1;
        }
 
-       rc = simple_pin_fs(&ocxlflash_fs_type, &ocxlflash_vfs_mount,
-                          &ocxlflash_fs_cnt);
+       rc = simple_pin_fs(&ocxlflash_fs, &ocxlflash_fs_type);
        if (unlikely(rc < 0)) {
                dev_err(dev, "%s: Cannot mount ocxlflash pseudofs rc=%d\n",
                        __func__, rc);
                goto err2;
        }
 
-       inode = alloc_anon_inode(ocxlflash_vfs_mount->mnt_sb);
+       inode = alloc_anon_inode(ocxlflash_fs.mount->mnt_sb);
        if (IS_ERR(inode)) {
                rc = PTR_ERR(inode);
                dev_err(dev, "%s: alloc_anon_inode failed rc=%d\n",
@@ -95,7 +93,7 @@ static struct file *ocxlflash_getfile(struct device *dev, 
const char *name,
                goto err3;
        }
 
-       file = alloc_file_pseudo(inode, ocxlflash_vfs_mount, name,
+       file = alloc_file_pseudo(inode, ocxlflash_fs.mount, name,
                                 flags & (O_ACCMODE | O_NONBLOCK), fops);
        if (IS_ERR(file)) {
                rc = PTR_ERR(file);
@@ -110,7 +108,7 @@ static struct file *ocxlflash_getfile(struct device *dev, 
const char *name,
 err4:
        iput(inode);
 err3:
-       simple_release_fs(&ocxlflash_vfs_mount, &ocxlflash_fs_cnt);
+       simple_release_fs(&ocxlflash_fs);
 err2:
        module_put(fops->owner);
 err1:
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index cdb45829354d..3cff446f222b 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -64,8 +64,7 @@ typedef struct {
 
 static DEFINE_RWLOCK(entries_lock);
 static struct file_system_type bm_fs_type;
-static struct vfsmount *bm_mnt;
-static int entry_count;
+static struct simple_fs bm_fs;
 
 /*
  * Max length of the register string.  Determined by:
@@ -623,7 +622,7 @@ static void kill_node(Node *e)
        drop_nlink(d_inode(dentry));
        d_drop(dentry);
        dput(dentry);
-       simple_release_fs(&bm_mnt, &entry_count);
+       simple_release_fs(&bm_fs);
 }
 
 /* /<entry> */
@@ -718,7 +717,7 @@ static ssize_t bm_register_write(struct file *file, const 
char __user *buffer,
        if (!inode)
                goto out2;
 
-       err = simple_pin_fs(&bm_fs_type, &bm_mnt, &entry_count);
+       err = simple_pin_fs(&bm_fs, &bm_fs_type);
        if (err) {
                iput(inode);
                inode = NULL;
@@ -732,7 +731,7 @@ static ssize_t bm_register_write(struct file *file, const 
char __user *buffer,
                if (IS_ERR(f)) {
                        err = PTR_ERR(f);
                        pr_notice("register: failed to install interpreter file 
%s\n", e->interpreter);
-                       simple_release_fs(&bm_mnt, &entry_count);
+                       simple_release_fs(&bm_fs);
                        iput(inode);
                        inode = NULL;
                        goto out2;
diff --git a/fs/configfs/mount.c b/fs/configfs/mount.c
index 0c6e8cf61953..9fb2791e5eed 100644
--- a/fs/configfs/mount.c
+++ b/fs/configfs/mount.c
@@ -24,9 +24,8 @@
 /* Random magic number */
 #define CONFIGFS_MAGIC 0x62656570
 
-static struct vfsmount *configfs_mount = NULL;
+static struct simple_fs configfs_fs;
 struct kmem_cache *configfs_dir_cachep;
-static int configfs_mnt_count = 0;
 
 
 static void configfs_free_inode(struct inode *inode)
@@ -123,14 +122,13 @@ MODULE_ALIAS_FS("configfs");
 
 struct dentry *configfs_pin_fs(void)
 {
-       int err = simple_pin_fs(&configfs_fs_type, &configfs_mount,
-                            &configfs_mnt_count);
-       return err ? ERR_PTR(err) : configfs_mount->mnt_root;
+       int err = simple_pin_fs(&configfs_fs, &configfs_fs_type);
+       return err ? ERR_PTR(err) : configfs_fs.mount->mnt_root;
 }
 
 void configfs_release_fs(void)
 {
-       simple_release_fs(&configfs_mount, &configfs_mnt_count);
+       simple_release_fs(&configfs_fs);
 }
 
 
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index b7f2e971ecbc..5dbb74a23e7c 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -32,8 +32,7 @@
 
 #define DEBUGFS_DEFAULT_MODE   0700
 
-static struct vfsmount *debugfs_mount;
-static int debugfs_mount_count;
+static struct simple_fs debugfs;
 static bool debugfs_registered;
 
 /*
@@ -297,7 +296,7 @@ struct dentry *debugfs_lookup(const char *name, struct 
dentry *parent)
                return NULL;
 
        if (!parent)
-               parent = debugfs_mount->mnt_root;
+               parent = debugfs.mount->mnt_root;
 
        dentry = lookup_positive_unlocked(name, parent, strlen(name));
        if (IS_ERR(dentry))
@@ -316,8 +315,7 @@ static struct dentry *start_creating(const char *name, 
struct dentry *parent)
        if (IS_ERR(parent))
                return parent;
 
-       error = simple_pin_fs(&debug_fs_type, &debugfs_mount,
-                             &debugfs_mount_count);
+       error = simple_pin_fs(&debugfs, &debug_fs_type);
        if (error) {
                pr_err("Unable to pin filesystem for file '%s'\n", name);
                return ERR_PTR(error);
@@ -329,7 +327,7 @@ static struct dentry *start_creating(const char *name, 
struct dentry *parent)
         * have around.
         */
        if (!parent)
-               parent = debugfs_mount->mnt_root;
+               parent = debugfs.mount->mnt_root;
 
        inode_lock(d_inode(parent));
        if (unlikely(IS_DEADDIR(d_inode(parent))))
@@ -349,7 +347,7 @@ static struct dentry *start_creating(const char *name, 
struct dentry *parent)
 
        if (IS_ERR(dentry)) {
                inode_unlock(d_inode(parent));
-               simple_release_fs(&debugfs_mount, &debugfs_mount_count);
+               simple_release_fs(&debugfs);
        }
 
        return dentry;
@@ -359,7 +357,7 @@ static struct dentry *failed_creating(struct dentry *dentry)
 {
        inode_unlock(d_inode(dentry->d_parent));
        dput(dentry);
-       simple_release_fs(&debugfs_mount, &debugfs_mount_count);
+       simple_release_fs(&debugfs);
        return ERR_PTR(-ENOMEM);
 }
 
@@ -676,9 +674,9 @@ static void __debugfs_file_removed(struct dentry *dentry)
 
 static void remove_one(struct dentry *victim)
 {
-        if (d_is_reg(victim))
+       if (d_is_reg(victim))
                __debugfs_file_removed(victim);
-       simple_release_fs(&debugfs_mount, &debugfs_mount_count);
+       simple_release_fs(&debugfs);
 }
 
 /**
@@ -699,9 +697,9 @@ void debugfs_remove(struct dentry *dentry)
        if (IS_ERR_OR_NULL(dentry))
                return;
 
-       simple_pin_fs(&debug_fs_type, &debugfs_mount, &debugfs_mount_count);
+       simple_pin_fs(&debugfs, &debug_fs_type);
        simple_recursive_removal(dentry, remove_one);
-       simple_release_fs(&debugfs_mount, &debugfs_mount_count);
+       simple_release_fs(&debugfs);
 }
 EXPORT_SYMBOL_GPL(debugfs_remove);
 
diff --git a/fs/libfs.c b/fs/libfs.c
index 3759fbacf522..54e07ae986ca 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -665,39 +665,64 @@ EXPORT_SYMBOL(simple_fill_super);
 
 static DEFINE_SPINLOCK(pin_fs_lock);
 
-int simple_pin_fs(struct file_system_type *type, struct vfsmount **mount, int 
*count)
+/**
+ * simple_pin_fs - generic function to pin (mount if needed,
+ *                otherwise add a reference to the mount) a filesystem
+ * @fs: a pointer to a the simple_fs struct containing a struct vfs_mount
+ *      pointer (that can be NULL) and a counter.
+ * @type: a pointer to the file system type used by vfs_kern_mount.
+ *
+ * This function sets fs->mount if NULL, by calling vfs_kern_mount
+ * on @type.
+ * It also takes care of incrementing the reference counter.
+ *
+ * This function will return 0 in case of success, and PTR_ERR(-ERROR)
+ * if vfs_kern_mount fails.
+ **/
+int simple_pin_fs(struct simple_fs *fs, struct file_system_type *type)
 {
        struct vfsmount *mnt = NULL;
        spin_lock(&pin_fs_lock);
-       if (unlikely(!*mount)) {
+       if (unlikely(!fs->mount)) {
                spin_unlock(&pin_fs_lock);
                mnt = vfs_kern_mount(type, SB_KERNMOUNT, type->name, NULL);
                if (IS_ERR(mnt))
                        return PTR_ERR(mnt);
                spin_lock(&pin_fs_lock);
-               if (!*mount)
-                       *mount = mnt;
+               if (!fs->mount)
+                       fs->mount = mnt;
        }
-       mntget(*mount);
-       ++*count;
+       mntget(fs->mount);
+       ++fs->count;
        spin_unlock(&pin_fs_lock);
        mntput(mnt);
        return 0;
 }
 EXPORT_SYMBOL(simple_pin_fs);
 
-void simple_release_fs(struct vfsmount **mount, int *count)
+/**
+ * simple_release_fs - decrements the reference counter and unmounts the
+ *                    file system.
+ * @fs: a pointer to a struct simple_fs containing the reference counter
+ *      and vfs_mount pointer
+ *
+ * This function decrements the refcount of the given file system and
+ * if 0 sets the mount pointer to NULL.
+ **/
+void simple_release_fs(struct simple_fs *fs)
 {
        struct vfsmount *mnt;
        spin_lock(&pin_fs_lock);
-       mnt = *mount;
-       if (!--*count)
-               *mount = NULL;
+       mnt = fs->mount;
+       if (!--fs->count)
+               fs->mount = NULL;
        spin_unlock(&pin_fs_lock);
        mntput(mnt);
 }
 EXPORT_SYMBOL(simple_release_fs);
 
+
+
 /**
  * simple_read_from_buffer - copy data from the buffer to user space
  * @to: the user space buffer to read to
diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
index 0ee8c6dfb036..370eb38ff1ad 100644
--- a/fs/tracefs/inode.c
+++ b/fs/tracefs/inode.c
@@ -24,8 +24,7 @@
 
 #define TRACEFS_DEFAULT_MODE   0700
 
-static struct vfsmount *tracefs_mount;
-static int tracefs_mount_count;
+static struct simple_fs tracefs;
 static bool tracefs_registered;
 
 static ssize_t default_read_file(struct file *file, char __user *buf,
@@ -316,8 +315,7 @@ static struct dentry *start_creating(const char *name, 
struct dentry *parent)
 
        pr_debug("tracefs: creating file '%s'\n",name);
 
-       error = simple_pin_fs(&trace_fs_type, &tracefs_mount,
-                             &tracefs_mount_count);
+       error = simple_pin_fs(&tracefs, &trace_fs_type);
        if (error)
                return ERR_PTR(error);
 
@@ -327,7 +325,7 @@ static struct dentry *start_creating(const char *name, 
struct dentry *parent)
         * have around.
         */
        if (!parent)
-               parent = tracefs_mount->mnt_root;
+               parent = tracefs.mount->mnt_root;
 
        inode_lock(parent->d_inode);
        if (unlikely(IS_DEADDIR(parent->d_inode)))
@@ -341,7 +339,7 @@ static struct dentry *start_creating(const char *name, 
struct dentry *parent)
 
        if (IS_ERR(dentry)) {
                inode_unlock(parent->d_inode);
-               simple_release_fs(&tracefs_mount, &tracefs_mount_count);
+               simple_release_fs(&tracefs);
        }
 
        return dentry;
@@ -351,7 +349,7 @@ static struct dentry *failed_creating(struct dentry *dentry)
 {
        inode_unlock(dentry->d_parent->d_inode);
        dput(dentry);
-       simple_release_fs(&tracefs_mount, &tracefs_mount_count);
+       simple_release_fs(&tracefs);
        return NULL;
 }
 
@@ -504,7 +502,7 @@ __init struct dentry *tracefs_create_instance_dir(const 
char *name,
 
 static void remove_one(struct dentry *victim)
 {
-       simple_release_fs(&tracefs_mount, &tracefs_mount_count);
+       simple_release_fs(&tracefs);
 }
 
 /**
@@ -520,9 +518,9 @@ void tracefs_remove(struct dentry *dentry)
        if (IS_ERR_OR_NULL(dentry))
                return;
 
-       simple_pin_fs(&trace_fs_type, &tracefs_mount, &tracefs_mount_count);
+       simple_pin_fs(&tracefs, &trace_fs_type);
        simple_recursive_removal(dentry, remove_one);
-       simple_release_fs(&tracefs_mount, &tracefs_mount_count);
+       simple_release_fs(&tracefs);
 }
 
 /**
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 4f6f59b4f22a..a3691c132b3a 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -3363,8 +3363,14 @@ struct tree_descr { const char *name; const struct 
file_operations *ops; int mod
 struct dentry *d_alloc_name(struct dentry *, const char *);
 extern int simple_fill_super(struct super_block *, unsigned long,
                             const struct tree_descr *);
-extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, 
int *count);
-extern void simple_release_fs(struct vfsmount **mount, int *count);
+
+struct simple_fs {
+       struct vfsmount *mount;
+       int count;
+};
+
+extern int simple_pin_fs(struct simple_fs *, struct file_system_type *);
+extern void simple_release_fs(struct simple_fs *);
 
 extern ssize_t simple_read_from_buffer(void __user *to, size_t count,
                        loff_t *ppos, const void *from, size_t available);
diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c
index 36f848734902..00f0158fb1e1 100644
--- a/security/apparmor/apparmorfs.c
+++ b/security/apparmor/apparmorfs.c
@@ -140,8 +140,7 @@ static int mangle_name(const char *name, char *target)
  */
 
 #define AAFS_NAME              "apparmorfs"
-static struct vfsmount *aafs_mnt;
-static int aafs_count;
+static struct simple_fs aafs;
 
 
 static int aafs_show_path(struct seq_file *seq, struct dentry *dentry)
@@ -273,7 +272,7 @@ static struct dentry *aafs_create(const char *name, umode_t 
mode,
        if (!(mode & S_IFMT))
                mode = (mode & S_IALLUGO) | S_IFREG;
 
-       error = simple_pin_fs(&aafs_ops, &aafs_mnt, &aafs_count);
+       error = simple_pin_fs(&aafs, &aafs_ops);
        if (error)
                return ERR_PTR(error);
 
@@ -303,7 +302,7 @@ static struct dentry *aafs_create(const char *name, umode_t 
mode,
 
 fail_lock:
        inode_unlock(dir);
-       simple_release_fs(&aafs_mnt, &aafs_count);
+       simple_release_fs(&aafs);
 
        return ERR_PTR(error);
 }
@@ -395,7 +394,7 @@ static void aafs_remove(struct dentry *dentry)
                dput(dentry);
        }
        inode_unlock(dir);
-       simple_release_fs(&aafs_mnt, &aafs_count);
+       simple_release_fs(&aafs);
 }
 
 
@@ -1824,7 +1823,7 @@ static int ns_mkdir_op(struct inode *dir, struct dentry 
*dentry, umode_t mode)
         * for pin_fs
         */
        inode_unlock(dir);
-       error = simple_pin_fs(&aafs_ops, &aafs_mnt, &aafs_count);
+       error = simple_pin_fs(&aafs, &aafs_ops);
        mutex_lock_nested(&parent->lock, parent->level);
        inode_lock_nested(dir, I_MUTEX_PARENT);
        if (error)
@@ -1845,7 +1844,7 @@ static int ns_mkdir_op(struct inode *dir, struct dentry 
*dentry, umode_t mode)
        aa_put_ns(ns);          /* list ref remains */
 out_pin:
        if (error)
-               simple_release_fs(&aafs_mnt, &aafs_count);
+               simple_release_fs(&aafs);
 out:
        mutex_unlock(&parent->lock);
        aa_put_ns(parent);
@@ -2580,7 +2579,7 @@ static const char *policy_get_link(struct dentry *dentry,
                return ERR_PTR(-ECHILD);
 
        ns = aa_get_current_ns();
-       path.mnt = mntget(aafs_mnt);
+       path.mnt = mntget(aafs.mount);
        path.dentry = dget(ns_dir(ns));
        error = nd_jump_link(&path);
        aa_put_ns(ns);
@@ -2631,10 +2630,10 @@ static int __init aa_create_aafs(void)
        }
 
        /* setup apparmorfs used to virtualize policy/ */
-       aafs_mnt = kern_mount(&aafs_ops);
-       if (IS_ERR(aafs_mnt))
+       aafs.mount = kern_mount(&aafs_ops);
+       if (IS_ERR(aafs.mount))
                panic("can't set apparmorfs up\n");
-       aafs_mnt->mnt_sb->s_flags &= ~SB_NOUSER;
+       aafs.mount->mnt_sb->s_flags &= ~SB_NOUSER;
 
        /* Populate fs tree. */
        error = entry_create_dir(&aa_sfs_entry, NULL);
@@ -2667,8 +2666,8 @@ static int __init aa_create_aafs(void)
 
        /* policy tree referenced by magic policy symlink */
        mutex_lock_nested(&root_ns->lock, root_ns->level);
-       error = __aafs_ns_mkdir(root_ns, aafs_mnt->mnt_root, ".policy",
-                               aafs_mnt->mnt_root);
+       error = __aafs_ns_mkdir(root_ns, aafs.mount->mnt_root, ".policy",
+                               aafs.mount->mnt_root);
        mutex_unlock(&root_ns->lock);
        if (error)
                goto error;
diff --git a/security/inode.c b/security/inode.c
index 6c326939750d..8a1bee35470a 100644
--- a/security/inode.c
+++ b/security/inode.c
@@ -22,8 +22,7 @@
 #include <linux/lsm_hooks.h>
 #include <linux/magic.h>
 
-static struct vfsmount *mount;
-static int mount_count;
+static struct simple_fs securityfs;
 
 static void securityfs_free_inode(struct inode *inode)
 {
@@ -118,12 +117,12 @@ static struct dentry *securityfs_create_dentry(const char 
*name, umode_t mode,
 
        pr_debug("securityfs: creating file '%s'\n",name);
 
-       error = simple_pin_fs(&fs_type, &mount, &mount_count);
+       error = simple_pin_fs(&securityfs, &fs_type);
        if (error)
                return ERR_PTR(error);
 
        if (!parent)
-               parent = mount->mnt_root;
+               parent = securityfs.mount->mnt_root;
 
        dir = d_inode(parent);
 
@@ -168,7 +167,7 @@ static struct dentry *securityfs_create_dentry(const char 
*name, umode_t mode,
        dentry = ERR_PTR(error);
 out:
        inode_unlock(dir);
-       simple_release_fs(&mount, &mount_count);
+       simple_release_fs(&securityfs);
        return dentry;
 }
 
@@ -309,7 +308,7 @@ void securityfs_remove(struct dentry *dentry)
                dput(dentry);
        }
        inode_unlock(dir);
-       simple_release_fs(&mount, &mount_count);
+       simple_release_fs(&securityfs);
 }
 EXPORT_SYMBOL_GPL(securityfs_remove);
 
-- 
2.25.2

Reply via email to