mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
fs_parse: fold fs_parameter_desc/fs_parameter_spec
The former contains nothing but a pointer to an array of the latter... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
96cafb9ccb
commit
d7167b1499
@ -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");
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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)
|
||||
|
@ -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");
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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 *);
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
};
|
||||
|
12
mm/shmem.c
12
mm/shmem.c
@ -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,
|
||||
};
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user