fs_parse: fold fs_parameter_desc/fs_parameter_spec
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 7 Sep 2019 11:23:15 +0000 (07:23 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 7 Feb 2020 19:48:37 +0000 (14:48 -0500)
The former contains nothing but a pointer to an array of the latter...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
29 files changed:
arch/powerpc/platforms/cell/spufs/inode.c
arch/s390/hypfs/inode.c
arch/x86/kernel/cpu/resctrl/rdtgroup.c
drivers/base/devtmpfs.c
drivers/block/rbd.c
drivers/usb/gadget/function/f_fs.c
fs/afs/super.c
fs/ceph/super.c
fs/fs_parser.c
fs/fuse/inode.c
fs/gfs2/ops_fstype.c
fs/hugetlbfs/inode.c
fs/jffs2/super.c
fs/nfs/fs_context.c
fs/proc/root.c
fs/ramfs/inode.c
fs/xfs/xfs_super.c
include/linux/fs.h
include/linux/fs_parser.h
include/linux/ramfs.h
include/linux/shmem_fs.h
kernel/bpf/inode.c
kernel/cgroup/cgroup-internal.h
kernel/cgroup/cgroup-v1.c
kernel/cgroup/cgroup.c
mm/shmem.c
net/ceph/ceph_common.c
security/selinux/hooks.c
security/smack/smack_lsm.c

index 36ce5d0..2539056 100644 (file)
@@ -583,7 +583,7 @@ enum {
        Opt_uid, Opt_gid, Opt_mode, Opt_debug,
 };
 
-static const struct fs_parameter_spec spufs_param_specs[] = {
+static const struct fs_parameter_spec spufs_fs_parameters[] = {
        fsparam_u32     ("gid",                         Opt_gid),
        fsparam_u32oct  ("mode",                        Opt_mode),
        fsparam_u32     ("uid",                         Opt_uid),
@@ -591,10 +591,6 @@ static const struct fs_parameter_spec spufs_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description spufs_fs_parameters = {
-       .specs          = spufs_param_specs,
-};
-
 static int spufs_show_options(struct seq_file *m, struct dentry *root)
 {
        struct spufs_sb_info *sbi = spufs_get_sb_info(root->d_sb);
@@ -622,7 +618,7 @@ static int spufs_parse_param(struct fs_context *fc, struct fs_parameter *param)
        kgid_t gid;
        int opt;
 
-       opt = fs_parse(fc, &spufs_fs_parameters, param, &result);
+       opt = fs_parse(fc, spufs_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -773,7 +769,7 @@ static struct file_system_type spufs_type = {
        .owner = THIS_MODULE,
        .name = "spufs",
        .init_fs_context = spufs_init_fs_context,
-       .parameters     = &spufs_fs_parameters,
+       .parameters     = spufs_fs_parameters,
        .kill_sb = kill_litter_super,
 };
 MODULE_ALIAS_FS("spufs");
index b3a6d13..5c97f48 100644 (file)
@@ -209,16 +209,12 @@ static int hypfs_release(struct inode *inode, struct file *filp)
 
 enum { Opt_uid, Opt_gid, };
 
-static const struct fs_parameter_spec hypfs_param_specs[] = {
+static const struct fs_parameter_spec hypfs_fs_parameters[] = {
        fsparam_u32("gid", Opt_gid),
        fsparam_u32("uid", Opt_uid),
        {}
 };
 
-static const struct fs_parameter_description hypfs_fs_parameters = {
-       .specs          = hypfs_param_specs,
-};
-
 static int hypfs_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct hypfs_sb_info *hypfs_info = fc->s_fs_info;
@@ -227,7 +223,7 @@ static int hypfs_parse_param(struct fs_context *fc, struct fs_parameter *param)
        kgid_t gid;
        int opt;
 
-       opt = fs_parse(fc, &hypfs_fs_parameters, param, &result);
+       opt = fs_parse(fc, hypfs_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -454,7 +450,7 @@ static struct file_system_type hypfs_type = {
        .owner          = THIS_MODULE,
        .name           = "s390_hypfs",
        .init_fs_context = hypfs_init_fs_context,
-       .parameters     = &hypfs_fs_parameters,
+       .parameters     = hypfs_fs_parameters,
        .kill_sb        = hypfs_kill_super
 };
 
index f145594..9891b46 100644 (file)
@@ -2037,24 +2037,20 @@ enum rdt_param {
        nr__rdt_params
 };
 
-static const struct fs_parameter_spec rdt_param_specs[] = {
+static const struct fs_parameter_spec rdt_fs_parameters[] = {
        fsparam_flag("cdp",             Opt_cdp),
        fsparam_flag("cdpl2",           Opt_cdpl2),
        fsparam_flag("mba_MBps",        Opt_mba_mbps),
        {}
 };
 
-static const struct fs_parameter_description rdt_fs_parameters = {
-       .specs          = rdt_param_specs,
-};
-
 static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct rdt_fs_context *ctx = rdt_fc2context(fc);
        struct fs_parse_result result;
        int opt;
 
-       opt = fs_parse(fc, &rdt_fs_parameters, param, &result);
+       opt = fs_parse(fc, rdt_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -2279,7 +2275,7 @@ static void rdt_kill_sb(struct super_block *sb)
 static struct file_system_type rdt_fs_type = {
        .name                   = "resctrl",
        .init_fs_context        = rdt_init_fs_context,
-       .parameters             = &rdt_fs_parameters,
+       .parameters             = rdt_fs_parameters,
        .kill_sb                = rdt_kill_sb,
 };
 
index 6cdbf15..3db9e4d 100644 (file)
@@ -71,10 +71,10 @@ static struct file_system_type internal_fs_type = {
        .name = "devtmpfs",
 #ifdef CONFIG_TMPFS
        .init_fs_context = shmem_init_fs_context,
-       .parameters     = &shmem_fs_parameters,
+       .parameters     = shmem_fs_parameters,
 #else
        .init_fs_context = ramfs_init_fs_context,
-       .parameters     = &ramfs_fs_parameters,
+       .parameters     = ramfs_fs_parameters,
 #endif
        .kill_sb = kill_litter_super,
 };
index e874869..d0437b5 100644 (file)
@@ -848,7 +848,7 @@ enum {
        Opt_notrim,
 };
 
-static const struct fs_parameter_spec rbd_param_specs[] = {
+static const struct fs_parameter_spec rbd_parameters[] = {
        fsparam_u32     ("alloc_size",                  Opt_alloc_size),
        fsparam_flag    ("exclusive",                   Opt_exclusive),
        fsparam_flag    ("lock_on_read",                Opt_lock_on_read),
@@ -863,10 +863,6 @@ static const struct fs_parameter_spec rbd_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description rbd_parameters = {
-       .specs          = rbd_param_specs,
-};
-
 struct rbd_options {
        int     queue_depth;
        int     alloc_size;
@@ -6359,7 +6355,7 @@ static int rbd_parse_param(struct fs_parameter *param,
        if (ret != -ENOPARAM)
                return ret;
 
-       token = __fs_parse(&log, &rbd_parameters, param, &result);
+       token = __fs_parse(&log, rbd_parameters, param, &result);
        dout("%s fs_parse '%s' token %d\n", __func__, param->key, token);
        if (token < 0) {
                if (token == -ENOPARAM)
index eda1972..997e2c9 100644 (file)
@@ -1486,7 +1486,7 @@ enum {
        Opt_gid,
 };
 
-static const struct fs_parameter_spec ffs_fs_param_specs[] = {
+static const struct fs_parameter_spec ffs_fs_fs_parameters[] = {
        fsparam_bool    ("no_disconnect",       Opt_no_disconnect),
        fsparam_u32     ("rmode",               Opt_rmode),
        fsparam_u32     ("fmode",               Opt_fmode),
@@ -1496,10 +1496,6 @@ static const struct fs_parameter_spec ffs_fs_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description ffs_fs_fs_parameters = {
-       .specs          = ffs_fs_param_specs,
-};
-
 static int ffs_fs_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct ffs_sb_fill_data *data = fc->fs_private;
@@ -1508,7 +1504,7 @@ static int ffs_fs_parse_param(struct fs_context *fc, struct fs_parameter *param)
 
        ENTER();
 
-       opt = fs_parse(fc, &ffs_fs_fs_parameters, param, &result);
+       opt = fs_parse(fc, ffs_fs_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -1640,7 +1636,7 @@ static struct file_system_type ffs_fs_type = {
        .owner          = THIS_MODULE,
        .name           = "functionfs",
        .init_fs_context = ffs_fs_init_fs_context,
-       .parameters     = &ffs_fs_fs_parameters,
+       .parameters     = ffs_fs_fs_parameters,
        .kill_sb        = ffs_fs_kill_sb,
 };
 MODULE_ALIAS_FS("functionfs");
index 862c806..dda7a9a 100644 (file)
@@ -38,13 +38,13 @@ static int afs_statfs(struct dentry *dentry, struct kstatfs *buf);
 static int afs_show_devname(struct seq_file *m, struct dentry *root);
 static int afs_show_options(struct seq_file *m, struct dentry *root);
 static int afs_init_fs_context(struct fs_context *fc);
-static const struct fs_parameter_description afs_fs_parameters;
+static const struct fs_parameter_spec afs_fs_parameters[];
 
 struct file_system_type afs_fs_type = {
        .owner                  = THIS_MODULE,
        .name                   = "afs",
        .init_fs_context        = afs_init_fs_context,
-       .parameters             = &afs_fs_parameters,
+       .parameters             = afs_fs_parameters,
        .kill_sb                = afs_kill_super,
        .fs_flags               = FS_RENAME_DOES_D_MOVE,
 };
@@ -81,7 +81,7 @@ static const struct constant_table afs_param_flock[] = {
        {}
 };
 
-static const struct fs_parameter_spec afs_param_specs[] = {
+static const struct fs_parameter_spec afs_fs_parameters[] = {
        fsparam_flag  ("autocell",      Opt_autocell),
        fsparam_flag  ("dyn",           Opt_dyn),
        fsparam_enum  ("flock",         Opt_flock, afs_param_flock),
@@ -89,10 +89,6 @@ static const struct fs_parameter_spec afs_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description afs_fs_parameters = {
-       .specs          = afs_param_specs,
-};
-
 /*
  * initialise the filesystem
  */
@@ -321,7 +317,7 @@ static int afs_parse_param(struct fs_context *fc, struct fs_parameter *param)
        struct afs_fs_context *ctx = fc->fs_private;
        int opt;
 
-       opt = fs_parse(fc, &afs_fs_parameters, param, &result);
+       opt = fs_parse(fc, afs_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
index 4974691..d52eb3e 100644 (file)
@@ -169,7 +169,7 @@ static const struct constant_table ceph_param_recover[] = {
        {}
 };
 
-static const struct fs_parameter_spec ceph_mount_param_specs[] = {
+static const struct fs_parameter_spec ceph_mount_parameters[] = {
        fsparam_flag_no ("acl",                         Opt_acl),
        fsparam_flag_no ("asyncreaddir",                Opt_asyncreaddir),
        fsparam_s32     ("caps_max",                    Opt_caps_max),
@@ -198,10 +198,6 @@ static const struct fs_parameter_spec ceph_mount_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description ceph_mount_parameters = {
-       .specs          = ceph_mount_param_specs,
-};
-
 struct ceph_parse_opts_ctx {
        struct ceph_options             *copts;
        struct ceph_mount_options       *opts;
@@ -271,7 +267,7 @@ static int ceph_parse_mount_param(struct fs_context *fc,
        if (ret != -ENOPARAM)
                return ret;
 
-       token = fs_parse(fc, &ceph_mount_parameters, param, &result);
+       token = fs_parse(fc, ceph_mount_parameters, param, &result);
        dout("%s fs_parse '%s' token %d\n", __func__, param->key, token);
        if (token < 0)
                return token;
index 3ed1e49..5f8c06a 100644 (file)
@@ -47,15 +47,14 @@ int lookup_constant(const struct constant_table *tbl, const char *name, int not_
 EXPORT_SYMBOL(lookup_constant);
 
 static const struct fs_parameter_spec *fs_lookup_key(
-       const struct fs_parameter_description *desc,
+       const struct fs_parameter_spec *desc,
        const char *name)
 {
        const struct fs_parameter_spec *p;
-
-       if (!desc->specs)
+       if (!desc)
                return NULL;
 
-       for (p = desc->specs; p->name; p++)
+       for (p = desc; p->name; p++)
                if (strcmp(p->name, name) == 0)
                        return p;
 
@@ -81,7 +80,7 @@ static const struct fs_parameter_spec *fs_lookup_key(
  * the parameter wasn't recognised and unknowns aren't okay.
  */
 int __fs_parse(struct p_log *log,
-            const struct fs_parameter_description *desc,
+            const struct fs_parameter_spec *desc,
             struct fs_parameter *param,
             struct fs_parse_result *result)
 {
@@ -355,39 +354,37 @@ bool validate_constant_table(const struct constant_table *tbl, size_t tbl_size,
  * @desc: The parameter description to validate.
  */
 bool fs_validate_description(const char *name,
-       const struct fs_parameter_description *desc)
+       const struct fs_parameter_spec *desc)
 {
        const struct fs_parameter_spec *param, *p2;
        bool good = true;
 
        pr_notice("*** VALIDATE %s ***\n", name);
 
-       if (desc->specs) {
-               for (param = desc->specs; param->name; param++) {
-                       enum fs_parameter_type t = param->type;
+       for (param = desc; param->name; param++) {
+               enum fs_parameter_type t = param->type;
 
-                       /* Check that the type is in range */
-                       if (t == __fs_param_wasnt_defined ||
-                           t >= nr__fs_parameter_type) {
-                               pr_err("VALIDATE %s: PARAM[%s] Bad type %u\n",
-                                      name, param->name, t);
+               /* Check that the type is in range */
+               if (t == __fs_param_wasnt_defined ||
+                   t >= nr__fs_parameter_type) {
+                       pr_err("VALIDATE %s: PARAM[%s] Bad type %u\n",
+                              name, param->name, t);
+                       good = false;
+               } else if (t == fs_param_is_enum) {
+                       const struct constant_table *e = param->data;
+                       if (!e || !e->name) {
+                               pr_err("VALIDATE %s: PARAM[%s] enum with no values\n",
+                                      name, param->name);
                                good = false;
-                       } else if (t == fs_param_is_enum) {
-                               const struct constant_table *e = param->data;
-                               if (!e || !e->name) {
-                                       pr_err("VALIDATE %s: PARAM[%s] enum with no values\n",
-                                              name, param->name);
-                                       good = false;
-                               }
                        }
+               }
 
-                       /* Check for duplicate parameter names */
-                       for (p2 = desc->specs; p2 < param; p2++) {
-                               if (strcmp(param->name, p2->name) == 0) {
-                                       pr_err("VALIDATE %s: PARAM[%s]: Duplicate\n",
-                                              name, param->name);
-                                       good = false;
-                               }
+               /* Check for duplicate parameter names */
+               for (p2 = desc; p2 < param; p2++) {
+                       if (strcmp(param->name, p2->name) == 0) {
+                               pr_err("VALIDATE %s: PARAM[%s]: Duplicate\n",
+                                      name, param->name);
+                               good = false;
                        }
                }
        }
index 5a01daa..f22bc34 100644 (file)
@@ -448,7 +448,7 @@ enum {
        OPT_ERR
 };
 
-static const struct fs_parameter_spec fuse_param_specs[] = {
+static const struct fs_parameter_spec fuse_fs_parameters[] = {
        fsparam_string  ("source",              OPT_SOURCE),
        fsparam_u32     ("fd",                  OPT_FD),
        fsparam_u32oct  ("rootmode",            OPT_ROOTMODE),
@@ -462,17 +462,13 @@ static const struct fs_parameter_spec fuse_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description fuse_fs_parameters = {
-       .specs          = fuse_param_specs,
-};
-
 static int fuse_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct fs_parse_result result;
        struct fuse_fs_context *ctx = fc->fs_private;
        int opt;
 
-       opt = fs_parse(fc, &fuse_fs_parameters, param, &result);
+       opt = fs_parse(fc, fuse_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -1346,7 +1342,7 @@ static struct file_system_type fuse_fs_type = {
        .name           = "fuse",
        .fs_flags       = FS_HAS_SUBTYPE | FS_USERNS_MOUNT,
        .init_fs_context = fuse_init_fs_context,
-       .parameters     = &fuse_fs_parameters,
+       .parameters     = fuse_fs_parameters,
        .kill_sb        = fuse_kill_sb_anon,
 };
 MODULE_ALIAS_FS("fuse");
@@ -1362,7 +1358,7 @@ static struct file_system_type fuseblk_fs_type = {
        .owner          = THIS_MODULE,
        .name           = "fuseblk",
        .init_fs_context = fuse_init_fs_context,
-       .parameters     = &fuse_fs_parameters,
+       .parameters     = fuse_fs_parameters,
        .kill_sb        = fuse_kill_sb_blk,
        .fs_flags       = FS_REQUIRES_DEV | FS_HAS_SUBTYPE,
 };
index 8bc2042..32623d2 100644 (file)
@@ -1306,7 +1306,7 @@ static const struct constant_table gfs2_param_errors[] = {
        {}
 };
 
-static const struct fs_parameter_spec gfs2_param_specs[] = {
+static const struct fs_parameter_spec gfs2_fs_parameters[] = {
        fsparam_string ("lockproto",          Opt_lockproto),
        fsparam_string ("locktable",          Opt_locktable),
        fsparam_string ("hostdata",           Opt_hostdata),
@@ -1336,10 +1336,6 @@ static const struct fs_parameter_spec gfs2_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description gfs2_fs_parameters = {
-       .specs = gfs2_param_specs,
-};
-
 /* Parse a single mount parameter */
 static int gfs2_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
@@ -1347,7 +1343,7 @@ static int gfs2_parse_param(struct fs_context *fc, struct fs_parameter *param)
        struct fs_parse_result result;
        int o;
 
-       o = fs_parse(fc, &gfs2_fs_parameters, param, &result);
+       o = fs_parse(fc, gfs2_fs_parameters, param, &result);
        if (o < 0)
                return o;
 
@@ -1649,7 +1645,7 @@ struct file_system_type gfs2_fs_type = {
        .name = "gfs2",
        .fs_flags = FS_REQUIRES_DEV,
        .init_fs_context = gfs2_init_fs_context,
-       .parameters = &gfs2_fs_parameters,
+       .parameters = gfs2_fs_parameters,
        .kill_sb = gfs2_kill_sb,
        .owner = THIS_MODULE,
 };
index c073f76..84d445e 100644 (file)
@@ -73,7 +73,7 @@ enum hugetlb_param {
        Opt_uid,
 };
 
-static const struct fs_parameter_spec hugetlb_param_specs[] = {
+static const struct fs_parameter_spec hugetlb_fs_parameters[] = {
        fsparam_u32   ("gid",           Opt_gid),
        fsparam_string("min_size",      Opt_min_size),
        fsparam_u32   ("mode",          Opt_mode),
@@ -84,10 +84,6 @@ static const struct fs_parameter_spec hugetlb_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description hugetlb_fs_parameters = {
-       .specs          = hugetlb_param_specs,
-};
-
 #ifdef CONFIG_NUMA
 static inline void hugetlb_set_vma_policy(struct vm_area_struct *vma,
                                        struct inode *inode, pgoff_t index)
@@ -1170,7 +1166,7 @@ static int hugetlbfs_parse_param(struct fs_context *fc, struct fs_parameter *par
        unsigned long ps;
        int opt;
 
-       opt = fs_parse(fc, &hugetlb_fs_parameters, param, &result);
+       opt = fs_parse(fc, hugetlb_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -1357,7 +1353,7 @@ static int hugetlbfs_init_fs_context(struct fs_context *fc)
 static struct file_system_type hugetlbfs_fs_type = {
        .name                   = "hugetlbfs",
        .init_fs_context        = hugetlbfs_init_fs_context,
-       .parameters             = &hugetlb_fs_parameters,
+       .parameters             = hugetlb_fs_parameters,
        .kill_sb                = kill_litter_super,
 };
 
index f6fda79..05d7878 100644 (file)
@@ -178,23 +178,19 @@ static const struct constant_table jffs2_param_compr[] = {
        {}
 };
 
-static const struct fs_parameter_spec jffs2_param_specs[] = {
+static const struct fs_parameter_spec jffs2_fs_parameters[] = {
        fsparam_enum    ("compr",       Opt_override_compr, jffs2_param_compr),
        fsparam_u32     ("rp_size",     Opt_rp_size),
        {}
 };
 
-const struct fs_parameter_description jffs2_fs_parameters = {
-       .specs          = jffs2_param_specs,
-};
-
 static int jffs2_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct fs_parse_result result;
        struct jffs2_sb_info *c = fc->s_fs_info;
        int opt;
 
-       opt = fs_parse(fc, &jffs2_fs_parameters, param, &result);
+       opt = fs_parse(fc, jffs2_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -337,7 +333,7 @@ static struct file_system_type jffs2_fs_type = {
        .owner =        THIS_MODULE,
        .name =         "jffs2",
        .init_fs_context = jffs2_init_fs_context,
-       .parameters =   &jffs2_fs_parameters,
+       .parameters =   jffs2_fs_parameters,
        .kill_sb =      jffs2_kill_sb,
 };
 MODULE_ALIAS_FS("jffs2");
index 5f45e63..39f980a 100644 (file)
@@ -111,7 +111,7 @@ static const struct constant_table nfs_param_enums_lookupcache[] = {
        {}
 };
 
-static const struct fs_parameter_spec nfs_param_specs[] = {
+static const struct fs_parameter_spec nfs_fs_parameters[] = {
        fsparam_flag_no("ac",           Opt_ac),
        fsparam_u32   ("acdirmax",      Opt_acdirmax),
        fsparam_u32   ("acdirmin",      Opt_acdirmin),
@@ -173,10 +173,6 @@ static const struct fs_parameter_spec nfs_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description nfs_fs_parameters = {
-       .specs          = nfs_param_specs,
-};
-
 enum {
        Opt_vers_2,
        Opt_vers_3,
@@ -443,7 +439,7 @@ static int nfs_fs_context_parse_param(struct fs_context *fc,
 
        dfprintk(MOUNT, "NFS:   parsing nfs mount option '%s'\n", param->key);
 
-       opt = fs_parse(fc, &nfs_fs_parameters, param, &result);
+       opt = fs_parse(fc, nfs_fs_parameters, param, &result);
        if (opt < 0)
                return ctx->sloppy ? 1 : opt;
 
@@ -1416,7 +1412,7 @@ struct file_system_type nfs_fs_type = {
        .owner                  = THIS_MODULE,
        .name                   = "nfs",
        .init_fs_context        = nfs_init_fs_context,
-       .parameters             = &nfs_fs_parameters,
+       .parameters             = nfs_fs_parameters,
        .kill_sb                = nfs_kill_super,
        .fs_flags               = FS_RENAME_DOES_D_MOVE|FS_BINARY_MOUNTDATA,
 };
@@ -1428,7 +1424,7 @@ struct file_system_type nfs4_fs_type = {
        .owner                  = THIS_MODULE,
        .name                   = "nfs4",
        .init_fs_context        = nfs_init_fs_context,
-       .parameters             = &nfs_fs_parameters,
+       .parameters             = nfs_fs_parameters,
        .kill_sb                = nfs_kill_super,
        .fs_flags               = FS_RENAME_DOES_D_MOVE|FS_BINARY_MOUNTDATA,
 };
index c447654..6a5825e 100644 (file)
@@ -41,23 +41,19 @@ enum proc_param {
        Opt_hidepid,
 };
 
-static const struct fs_parameter_spec proc_param_specs[] = {
+static const struct fs_parameter_spec proc_fs_parameters[] = {
        fsparam_u32("gid",      Opt_gid),
        fsparam_u32("hidepid",  Opt_hidepid),
        {}
 };
 
-static const struct fs_parameter_description proc_fs_parameters = {
-       .specs          = proc_param_specs,
-};
-
 static int proc_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct proc_fs_context *ctx = fc->fs_private;
        struct fs_parse_result result;
        int opt;
 
-       opt = fs_parse(fc, &proc_fs_parameters, param, &result);
+       opt = fs_parse(fc, proc_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -206,7 +202,7 @@ static void proc_kill_sb(struct super_block *sb)
 static struct file_system_type proc_fs_type = {
        .name                   = "proc",
        .init_fs_context        = proc_init_fs_context,
-       .parameters             = &proc_fs_parameters,
+       .parameters             = proc_fs_parameters,
        .kill_sb                = proc_kill_sb,
        .fs_flags               = FS_USERNS_MOUNT | FS_DISALLOW_NOTIFY_PERM,
 };
index bb7ab56..ee179a8 100644 (file)
@@ -181,22 +181,18 @@ enum ramfs_param {
        Opt_mode,
 };
 
-static const struct fs_parameter_spec ramfs_param_specs[] = {
+const struct fs_parameter_spec ramfs_fs_parameters[] = {
        fsparam_u32oct("mode",  Opt_mode),
        {}
 };
 
-const struct fs_parameter_description ramfs_fs_parameters = {
-       .specs          = ramfs_param_specs,
-};
-
 static int ramfs_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct fs_parse_result result;
        struct ramfs_fs_info *fsi = fc->s_fs_info;
        int opt;
 
-       opt = fs_parse(fc, &ramfs_fs_parameters, param, &result);
+       opt = fs_parse(fc, ramfs_fs_parameters, param, &result);
        if (opt < 0) {
                /*
                 * We might like to report bad mount options here;
@@ -277,7 +273,7 @@ static void ramfs_kill_sb(struct super_block *sb)
 static struct file_system_type ramfs_fs_type = {
        .name           = "ramfs",
        .init_fs_context = ramfs_init_fs_context,
-       .parameters     = &ramfs_fs_parameters,
+       .parameters     = ramfs_fs_parameters,
        .kill_sb        = ramfs_kill_sb,
        .fs_flags       = FS_USERNS_MOUNT,
 };
index ee23a2b..b03d82f 100644 (file)
@@ -62,7 +62,7 @@ enum {
        Opt_discard, Opt_nodiscard, Opt_dax,
 };
 
-static const struct fs_parameter_spec xfs_param_specs[] = {
+static const struct fs_parameter_spec xfs_fs_parameters[] = {
        fsparam_u32("logbufs",          Opt_logbufs),
        fsparam_string("logbsize",      Opt_logbsize),
        fsparam_string("logdev",        Opt_logdev),
@@ -106,10 +106,6 @@ static const struct fs_parameter_spec xfs_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description xfs_fs_parameters = {
-       .specs          = xfs_param_specs,
-};
-
 struct proc_xfs_info {
        uint64_t        flag;
        char            *str;
@@ -1145,7 +1141,7 @@ xfs_fc_parse_param(
        int                     size = 0;
        int                     opt;
 
-       opt = fs_parse(fc, &xfs_fs_parameters, param, &result);
+       opt = fs_parse(fc, xfs_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -1787,7 +1783,7 @@ static struct file_system_type xfs_fs_type = {
        .owner                  = THIS_MODULE,
        .name                   = "xfs",
        .init_fs_context        = xfs_init_fs_context,
-       .parameters             = &xfs_fs_parameters,
+       .parameters             = xfs_fs_parameters,
        .kill_sb                = kill_block_super,
        .fs_flags               = FS_REQUIRES_DEV,
 };
index 98e0349..5ace552 100644 (file)
@@ -67,7 +67,7 @@ struct fscrypt_operations;
 struct fsverity_info;
 struct fsverity_operations;
 struct fs_context;
-struct fs_parameter_description;
+struct fs_parameter_spec;
 
 extern void __init inode_init(void);
 extern void __init inode_init_early(void);
@@ -2224,7 +2224,7 @@ struct file_system_type {
 #define FS_DISALLOW_NOTIFY_PERM        16      /* Disable fanotify permission events */
 #define FS_RENAME_DOES_D_MOVE  32768   /* FS will handle d_move() during rename() internally. */
        int (*init_fs_context)(struct fs_context *);
-       const struct fs_parameter_description *parameters;
+       const struct fs_parameter_spec *parameters;
        struct dentry *(*mount) (struct file_system_type *, int,
                       const char *, void *);
        void (*kill_sb) (struct super_block *);
index ac439ee..dcbac24 100644 (file)
@@ -56,10 +56,6 @@ struct fs_parameter_spec {
        const void              *data;
 };
 
-struct fs_parameter_description {
-       const struct fs_parameter_spec *specs;  /* List of param specifications */
-};
-
 /*
  * Result of parse.
  */
@@ -74,12 +70,12 @@ struct fs_parse_result {
 };
 
 extern int __fs_parse(struct p_log *log,
-                   const struct fs_parameter_description *desc,
+                   const struct fs_parameter_spec *desc,
                    struct fs_parameter *value,
                    struct fs_parse_result *result);
 
 static inline int fs_parse(struct fs_context *fc,
-            const struct fs_parameter_description *desc,
+            const struct fs_parameter_spec *desc,
             struct fs_parameter *param,
             struct fs_parse_result *result)
 {
@@ -97,13 +93,13 @@ extern int lookup_constant(const struct constant_table tbl[], const char *name,
 extern bool validate_constant_table(const struct constant_table *tbl, size_t tbl_size,
                                    int low, int high, int special);
 extern bool fs_validate_description(const char *name,
-                                   const struct fs_parameter_description *desc);
+                                   const struct fs_parameter_spec *desc);
 #else
 static inline bool validate_constant_table(const struct constant_table *tbl, size_t tbl_size,
                                           int low, int high, int special)
 { return true; }
 static inline bool fs_validate_description(const char *name,
-                                          const struct fs_parameter_description *desc)
+                                          const struct fs_parameter_spec *desc)
 { return true; }
 #endif
 
index b806a0f..917528d 100644 (file)
@@ -2,6 +2,8 @@
 #ifndef _LINUX_RAMFS_H
 #define _LINUX_RAMFS_H
 
+#include <linux/fs_parser.h> // bleh...
+
 struct inode *ramfs_get_inode(struct super_block *sb, const struct inode *dir,
         umode_t mode, dev_t dev);
 extern int ramfs_init_fs_context(struct fs_context *fc);
@@ -16,7 +18,7 @@ ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize)
 extern int ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize);
 #endif
 
-extern const struct fs_parameter_description ramfs_fs_parameters;
+extern const struct fs_parameter_spec ramfs_fs_parameters[];
 extern const struct file_operations ramfs_file_operations;
 extern const struct vm_operations_struct generic_file_vm_ops;
 
index de8e4b7..d56fefe 100644 (file)
@@ -8,6 +8,7 @@
 #include <linux/pagemap.h>
 #include <linux/percpu_counter.h>
 #include <linux/xattr.h>
+#include <linux/fs_parser.h>
 
 /* inode in-kernel data */
 
@@ -49,7 +50,7 @@ static inline struct shmem_inode_info *SHMEM_I(struct inode *inode)
 /*
  * Functions in mm/shmem.c called directly from elsewhere:
  */
-extern const struct fs_parameter_description shmem_fs_parameters;
+extern const struct fs_parameter_spec shmem_fs_parameters[];
 extern int shmem_init(void);
 extern int shmem_init_fs_context(struct fs_context *fc);
 extern struct file *shmem_file_setup(const char *name,
index 9608aa4..f4b2ef7 100644 (file)
@@ -587,15 +587,11 @@ enum {
        OPT_MODE,
 };
 
-static const struct fs_parameter_spec bpf_param_specs[] = {
+static const struct fs_parameter_spec bpf_fs_parameters[] = {
        fsparam_u32oct  ("mode",                        OPT_MODE),
        {}
 };
 
-static const struct fs_parameter_description bpf_fs_parameters = {
-       .specs          = bpf_param_specs,
-};
-
 struct bpf_mount_opts {
        umode_t mode;
 };
@@ -606,7 +602,7 @@ static int bpf_parse_param(struct fs_context *fc, struct fs_parameter *param)
        struct fs_parse_result result;
        int opt;
 
-       opt = fs_parse(fc, &bpf_fs_parameters, param, &result);
+       opt = fs_parse(fc, bpf_fs_parameters, param, &result);
        if (opt < 0)
                /* We might like to report bad mount options here, but
                 * traditionally we've ignored all mount options, so we'd
@@ -682,7 +678,7 @@ static struct file_system_type bpf_fs_type = {
        .owner          = THIS_MODULE,
        .name           = "bpf",
        .init_fs_context = bpf_init_fs_context,
-       .parameters     = &bpf_fs_parameters,
+       .parameters     = bpf_fs_parameters,
        .kill_sb        = kill_litter_super,
 };
 
index 90d1710..bfbeabc 100644 (file)
@@ -7,7 +7,7 @@
 #include <linux/workqueue.h>
 #include <linux/list.h>
 #include <linux/refcount.h>
-#include <linux/fs_context.h>
+#include <linux/fs_parser.h>
 
 #define TRACE_CGROUP_PATH_LEN 1024
 extern spinlock_t trace_cgroup_path_lock;
@@ -265,7 +265,7 @@ extern const struct proc_ns_operations cgroupns_operations;
  */
 extern struct cftype cgroup1_base_files[];
 extern struct kernfs_syscall_ops cgroup1_kf_syscall_ops;
-extern const struct fs_parameter_description cgroup1_fs_parameters;
+extern const struct fs_parameter_spec cgroup1_fs_parameters[];
 
 int proc_cgroupstats_show(struct seq_file *m, void *v);
 bool cgroup1_ssid_disabled(int ssid);
index c7b526f..4085456 100644 (file)
@@ -885,7 +885,7 @@ enum cgroup1_param {
        Opt_xattr,
 };
 
-static const struct fs_parameter_spec cgroup1_param_specs[] = {
+const struct fs_parameter_spec cgroup1_fs_parameters[] = {
        fsparam_flag  ("all",           Opt_all),
        fsparam_flag  ("clone_children", Opt_clone_children),
        fsparam_flag  ("cpuset_v2_mode", Opt_cpuset_v2_mode),
@@ -897,10 +897,6 @@ static const struct fs_parameter_spec cgroup1_param_specs[] = {
        {}
 };
 
-const struct fs_parameter_description cgroup1_fs_parameters = {
-       .specs          = cgroup1_param_specs,
-};
-
 int cgroup1_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct cgroup_fs_context *ctx = cgroup_fc2context(fc);
@@ -908,7 +904,7 @@ int cgroup1_parse_param(struct fs_context *fc, struct fs_parameter *param)
        struct fs_parse_result result;
        int opt, i;
 
-       opt = fs_parse(fc, &cgroup1_fs_parameters, param, &result);
+       opt = fs_parse(fc, cgroup1_fs_parameters, param, &result);
        if (opt == -ENOPARAM) {
                if (strcmp(param->key, "source") == 0) {
                        fc->source = param->string;
index d86d441..a70a37e 100644 (file)
@@ -1816,23 +1816,19 @@ enum cgroup2_param {
        nr__cgroup2_params
 };
 
-static const struct fs_parameter_spec cgroup2_param_specs[] = {
+static const struct fs_parameter_spec cgroup2_fs_parameters[] = {
        fsparam_flag("nsdelegate",              Opt_nsdelegate),
        fsparam_flag("memory_localevents",      Opt_memory_localevents),
        {}
 };
 
-static const struct fs_parameter_description cgroup2_fs_parameters = {
-       .specs          = cgroup2_param_specs,
-};
-
 static int cgroup2_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
        struct cgroup_fs_context *ctx = cgroup_fc2context(fc);
        struct fs_parse_result result;
        int opt;
 
-       opt = fs_parse(fc, &cgroup2_fs_parameters, param, &result);
+       opt = fs_parse(fc, cgroup2_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -2155,7 +2151,7 @@ static void cgroup_kill_sb(struct super_block *sb)
 struct file_system_type cgroup_fs_type = {
        .name                   = "cgroup",
        .init_fs_context        = cgroup_init_fs_context,
-       .parameters             = &cgroup1_fs_parameters,
+       .parameters             = cgroup1_fs_parameters,
        .kill_sb                = cgroup_kill_sb,
        .fs_flags               = FS_USERNS_MOUNT,
 };
@@ -2163,7 +2159,7 @@ struct file_system_type cgroup_fs_type = {
 static struct file_system_type cgroup2_fs_type = {
        .name                   = "cgroup2",
        .init_fs_context        = cgroup_init_fs_context,
-       .parameters             = &cgroup2_fs_parameters,
+       .parameters             = cgroup2_fs_parameters,
        .kill_sb                = cgroup_kill_sb,
        .fs_flags               = FS_USERNS_MOUNT,
 };
index 445d038..efbbf2b 100644 (file)
@@ -3391,7 +3391,7 @@ static const struct constant_table shmem_param_enums_huge[] = {
        {}
 };
 
-static const struct fs_parameter_spec shmem_param_specs[] = {
+const struct fs_parameter_spec shmem_fs_parameters[] = {
        fsparam_u32   ("gid",           Opt_gid),
        fsparam_enum  ("huge",          Opt_huge,  shmem_param_enums_huge),
        fsparam_u32oct("mode",          Opt_mode),
@@ -3403,10 +3403,6 @@ static const struct fs_parameter_spec shmem_param_specs[] = {
        {}
 };
 
-const struct fs_parameter_description shmem_fs_parameters = {
-       .specs          = shmem_param_specs,
-};
-
 static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param)
 {
        struct shmem_options *ctx = fc->fs_private;
@@ -3415,7 +3411,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param)
        char *rest;
        int opt;
 
-       opt = fs_parse(fc, &shmem_fs_parameters, param, &result);
+       opt = fs_parse(fc, shmem_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -3889,7 +3885,7 @@ static struct file_system_type shmem_fs_type = {
        .name           = "tmpfs",
        .init_fs_context = shmem_init_fs_context,
 #ifdef CONFIG_TMPFS
-       .parameters     = &shmem_fs_parameters,
+       .parameters     = shmem_fs_parameters,
 #endif
        .kill_sb        = kill_litter_super,
        .fs_flags       = FS_USERNS_MOUNT,
@@ -4035,7 +4031,7 @@ bool shmem_huge_enabled(struct vm_area_struct *vma)
 static struct file_system_type shmem_fs_type = {
        .name           = "tmpfs",
        .init_fs_context = ramfs_init_fs_context,
-       .parameters     = &ramfs_fs_parameters,
+       .parameters     = ramfs_fs_parameters,
        .kill_sb        = kill_litter_super,
        .fs_flags       = FS_USERNS_MOUNT,
 };
index f639e04..a0e97f6 100644 (file)
@@ -269,7 +269,7 @@ enum {
        Opt_abort_on_full,
 };
 
-static const struct fs_parameter_spec ceph_param_specs[] = {
+static const struct fs_parameter_spec ceph_parameters[] = {
        fsparam_flag    ("abort_on_full",               Opt_abort_on_full),
        fsparam_flag_no ("cephx_require_signatures",    Opt_cephx_require_signatures),
        fsparam_flag_no ("cephx_sign_messages",         Opt_cephx_sign_messages),
@@ -290,10 +290,6 @@ static const struct fs_parameter_spec ceph_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description ceph_parameters = {
-        .specs          = ceph_param_specs,
-};
-
 struct ceph_options *ceph_alloc_options(void)
 {
        struct ceph_options *opt;
@@ -406,7 +402,7 @@ int ceph_parse_param(struct fs_parameter *param, struct ceph_options *opt,
        int token, err;
        struct p_log log = {.prefix = "libceph", .log = l};
 
-       token = __fs_parse(&log, &ceph_parameters, param, &result);
+       token = __fs_parse(&log, ceph_parameters, param, &result);
        dout("%s fs_parse '%s' token %d\n", __func__, param->key, token);
        if (token < 0)
                return token;
index 54f3463..d085569 100644 (file)
@@ -2808,7 +2808,7 @@ static int selinux_fs_context_dup(struct fs_context *fc,
        return 0;
 }
 
-static const struct fs_parameter_spec selinux_param_specs[] = {
+static const struct fs_parameter_spec selinux_fs_parameters[] = {
        fsparam_string(CONTEXT_STR,     Opt_context),
        fsparam_string(DEFCONTEXT_STR,  Opt_defcontext),
        fsparam_string(FSCONTEXT_STR,   Opt_fscontext),
@@ -2817,17 +2817,13 @@ static const struct fs_parameter_spec selinux_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description selinux_fs_parameters = {
-       .specs          = selinux_param_specs,
-};
-
 static int selinux_fs_context_parse_param(struct fs_context *fc,
                                          struct fs_parameter *param)
 {
        struct fs_parse_result result;
        int opt, rc;
 
-       opt = fs_parse(fc, &selinux_fs_parameters, param, &result);
+       opt = fs_parse(fc, selinux_fs_parameters, param, &result);
        if (opt < 0)
                return opt;
 
@@ -7144,7 +7140,7 @@ static __init int selinux_init(void)
        else
                pr_debug("SELinux:  Starting in permissive mode\n");
 
-       fs_validate_description("selinux", &selinux_fs_parameters);
+       fs_validate_description("selinux", selinux_fs_parameters);
 
        return 0;
 }
index 646c0b4..ed17049 100644 (file)
@@ -678,7 +678,7 @@ static int smack_fs_context_dup(struct fs_context *fc,
        return 0;
 }
 
-static const struct fs_parameter_spec smack_param_specs[] = {
+static const struct fs_parameter_spec smack_fs_parameters[] = {
        fsparam_string("smackfsdef",            Opt_fsdefault),
        fsparam_string("smackfsdefault",        Opt_fsdefault),
        fsparam_string("smackfsfloor",          Opt_fsfloor),
@@ -688,10 +688,6 @@ static const struct fs_parameter_spec smack_param_specs[] = {
        {}
 };
 
-static const struct fs_parameter_description smack_fs_parameters = {
-       .specs          = smack_param_specs,
-};
-
 /**
  * smack_fs_context_parse_param - Parse a single mount parameter
  * @fc: The new filesystem context being constructed.
@@ -706,7 +702,7 @@ static int smack_fs_context_parse_param(struct fs_context *fc,
        struct fs_parse_result result;
        int opt, rc;
 
-       opt = fs_parse(fc, &smack_fs_parameters, param, &result);
+       opt = fs_parse(fc, smack_fs_parameters, param, &result);
        if (opt < 0)
                return opt;