提交 5916a22b 编写于 作者: E Eric Biggers 提交者: Mike Snitzer

dm: constify argument arrays

The arrays of 'struct dm_arg' are never modified by the device-mapper
core, so constify them so that they are placed in .rodata.

(Exception: the args array in dm-raid cannot be constified because it is
allocated on the stack and modified.)
Signed-off-by: NEric Biggers <ebiggers@google.com>
Signed-off-by: NMike Snitzer <snitzer@redhat.com>
上级 3f2e5393
...@@ -2306,7 +2306,7 @@ static void init_features(struct cache_features *cf) ...@@ -2306,7 +2306,7 @@ static void init_features(struct cache_features *cf)
static int parse_features(struct cache_args *ca, struct dm_arg_set *as, static int parse_features(struct cache_args *ca, struct dm_arg_set *as,
char **error) char **error)
{ {
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 2, "Invalid number of cache feature arguments"}, {0, 2, "Invalid number of cache feature arguments"},
}; };
...@@ -2348,7 +2348,7 @@ static int parse_features(struct cache_args *ca, struct dm_arg_set *as, ...@@ -2348,7 +2348,7 @@ static int parse_features(struct cache_args *ca, struct dm_arg_set *as,
static int parse_policy(struct cache_args *ca, struct dm_arg_set *as, static int parse_policy(struct cache_args *ca, struct dm_arg_set *as,
char **error) char **error)
{ {
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 1024, "Invalid number of policy arguments"}, {0, 1024, "Invalid number of policy arguments"},
}; };
......
...@@ -2533,7 +2533,7 @@ static int crypt_ctr_optional(struct dm_target *ti, unsigned int argc, char **ar ...@@ -2533,7 +2533,7 @@ static int crypt_ctr_optional(struct dm_target *ti, unsigned int argc, char **ar
{ {
struct crypt_config *cc = ti->private; struct crypt_config *cc = ti->private;
struct dm_arg_set as; struct dm_arg_set as;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 6, "Invalid number of feature args"}, {0, 6, "Invalid number of feature args"},
}; };
unsigned int opt_params, val; unsigned int opt_params, val;
......
...@@ -51,7 +51,7 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc, ...@@ -51,7 +51,7 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc,
unsigned argc; unsigned argc;
const char *arg_name; const char *arg_name;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 6, "Invalid number of feature args"}, {0, 6, "Invalid number of feature args"},
{1, UINT_MAX, "Invalid corrupt bio byte"}, {1, UINT_MAX, "Invalid corrupt bio byte"},
{0, 255, "Invalid corrupt value to write into bio byte (0-255)"}, {0, 255, "Invalid corrupt value to write into bio byte (0-255)"},
...@@ -178,7 +178,7 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc, ...@@ -178,7 +178,7 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc,
*/ */
static int flakey_ctr(struct dm_target *ti, unsigned int argc, char **argv) static int flakey_ctr(struct dm_target *ti, unsigned int argc, char **argv)
{ {
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, UINT_MAX, "Invalid up interval"}, {0, UINT_MAX, "Invalid up interval"},
{0, UINT_MAX, "Invalid down interval"}, {0, UINT_MAX, "Invalid down interval"},
}; };
......
...@@ -2780,7 +2780,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv) ...@@ -2780,7 +2780,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
int r; int r;
unsigned extra_args; unsigned extra_args;
struct dm_arg_set as; struct dm_arg_set as;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 9, "Invalid number of feature args"}, {0, 9, "Invalid number of feature args"},
}; };
unsigned journal_sectors, interleave_sectors, buffer_sectors, journal_watermark, sync_msec; unsigned journal_sectors, interleave_sectors, buffer_sectors, journal_watermark, sync_msec;
......
...@@ -702,7 +702,7 @@ static int parse_path_selector(struct dm_arg_set *as, struct priority_group *pg, ...@@ -702,7 +702,7 @@ static int parse_path_selector(struct dm_arg_set *as, struct priority_group *pg,
struct path_selector_type *pst; struct path_selector_type *pst;
unsigned ps_argc; unsigned ps_argc;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 1024, "invalid number of path selector args"}, {0, 1024, "invalid number of path selector args"},
}; };
...@@ -826,7 +826,7 @@ static struct pgpath *parse_path(struct dm_arg_set *as, struct path_selector *ps ...@@ -826,7 +826,7 @@ static struct pgpath *parse_path(struct dm_arg_set *as, struct path_selector *ps
static struct priority_group *parse_priority_group(struct dm_arg_set *as, static struct priority_group *parse_priority_group(struct dm_arg_set *as,
struct multipath *m) struct multipath *m)
{ {
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{1, 1024, "invalid number of paths"}, {1, 1024, "invalid number of paths"},
{0, 1024, "invalid number of selector args"} {0, 1024, "invalid number of selector args"}
}; };
...@@ -902,7 +902,7 @@ static int parse_hw_handler(struct dm_arg_set *as, struct multipath *m) ...@@ -902,7 +902,7 @@ static int parse_hw_handler(struct dm_arg_set *as, struct multipath *m)
int ret; int ret;
struct dm_target *ti = m->ti; struct dm_target *ti = m->ti;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 1024, "invalid number of hardware handler args"}, {0, 1024, "invalid number of hardware handler args"},
}; };
...@@ -954,7 +954,7 @@ static int parse_features(struct dm_arg_set *as, struct multipath *m) ...@@ -954,7 +954,7 @@ static int parse_features(struct dm_arg_set *as, struct multipath *m)
struct dm_target *ti = m->ti; struct dm_target *ti = m->ti;
const char *arg_name; const char *arg_name;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 8, "invalid number of feature args"}, {0, 8, "invalid number of feature args"},
{1, 50, "pg_init_retries must be between 1 and 50"}, {1, 50, "pg_init_retries must be between 1 and 50"},
{0, 60000, "pg_init_delay_msecs must be between 0 and 60000"}, {0, 60000, "pg_init_delay_msecs must be between 0 and 60000"},
...@@ -1023,7 +1023,7 @@ static int parse_features(struct dm_arg_set *as, struct multipath *m) ...@@ -1023,7 +1023,7 @@ static int parse_features(struct dm_arg_set *as, struct multipath *m)
static int multipath_ctr(struct dm_target *ti, unsigned argc, char **argv) static int multipath_ctr(struct dm_target *ti, unsigned argc, char **argv)
{ {
/* target arguments */ /* target arguments */
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 1024, "invalid number of priority groups"}, {0, 1024, "invalid number of priority groups"},
{0, 1024, "invalid initial priority group number"}, {0, 1024, "invalid initial priority group number"},
}; };
......
...@@ -251,7 +251,7 @@ static void switch_dtr(struct dm_target *ti) ...@@ -251,7 +251,7 @@ static void switch_dtr(struct dm_target *ti)
*/ */
static int switch_ctr(struct dm_target *ti, unsigned argc, char **argv) static int switch_ctr(struct dm_target *ti, unsigned argc, char **argv)
{ {
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{1, (KMALLOC_MAX_SIZE - sizeof(struct switch_ctx)) / sizeof(struct switch_path), "Invalid number of paths"}, {1, (KMALLOC_MAX_SIZE - sizeof(struct switch_ctx)) / sizeof(struct switch_path), "Invalid number of paths"},
{1, UINT_MAX, "Invalid region size"}, {1, UINT_MAX, "Invalid region size"},
{0, 0, "Invalid number of optional args"}, {0, 0, "Invalid number of optional args"},
......
...@@ -806,7 +806,8 @@ int dm_table_add_target(struct dm_table *t, const char *type, ...@@ -806,7 +806,8 @@ int dm_table_add_target(struct dm_table *t, const char *type,
/* /*
* Target argument parsing helpers. * Target argument parsing helpers.
*/ */
static int validate_next_arg(struct dm_arg *arg, struct dm_arg_set *arg_set, static int validate_next_arg(const struct dm_arg *arg,
struct dm_arg_set *arg_set,
unsigned *value, char **error, unsigned grouped) unsigned *value, char **error, unsigned grouped)
{ {
const char *arg_str = dm_shift_arg(arg_set); const char *arg_str = dm_shift_arg(arg_set);
...@@ -824,14 +825,14 @@ static int validate_next_arg(struct dm_arg *arg, struct dm_arg_set *arg_set, ...@@ -824,14 +825,14 @@ static int validate_next_arg(struct dm_arg *arg, struct dm_arg_set *arg_set,
return 0; return 0;
} }
int dm_read_arg(struct dm_arg *arg, struct dm_arg_set *arg_set, int dm_read_arg(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *value, char **error) unsigned *value, char **error)
{ {
return validate_next_arg(arg, arg_set, value, error, 0); return validate_next_arg(arg, arg_set, value, error, 0);
} }
EXPORT_SYMBOL(dm_read_arg); EXPORT_SYMBOL(dm_read_arg);
int dm_read_arg_group(struct dm_arg *arg, struct dm_arg_set *arg_set, int dm_read_arg_group(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *value, char **error) unsigned *value, char **error)
{ {
return validate_next_arg(arg, arg_set, value, error, 1); return validate_next_arg(arg, arg_set, value, error, 1);
......
...@@ -3041,7 +3041,7 @@ static int parse_pool_features(struct dm_arg_set *as, struct pool_features *pf, ...@@ -3041,7 +3041,7 @@ static int parse_pool_features(struct dm_arg_set *as, struct pool_features *pf,
unsigned argc; unsigned argc;
const char *arg_name; const char *arg_name;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, 4, "Invalid number of pool feature arguments"}, {0, 4, "Invalid number of pool feature arguments"},
}; };
......
...@@ -839,7 +839,7 @@ static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v) ...@@ -839,7 +839,7 @@ static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v)
struct dm_target *ti = v->ti; struct dm_target *ti = v->ti;
const char *arg_name; const char *arg_name;
static struct dm_arg _args[] = { static const struct dm_arg _args[] = {
{0, DM_VERITY_OPTS_MAX, "Invalid number of feature args"}, {0, DM_VERITY_OPTS_MAX, "Invalid number of feature args"},
}; };
......
...@@ -387,7 +387,7 @@ struct dm_arg { ...@@ -387,7 +387,7 @@ struct dm_arg {
* Validate the next argument, either returning it as *value or, if invalid, * Validate the next argument, either returning it as *value or, if invalid,
* returning -EINVAL and setting *error. * returning -EINVAL and setting *error.
*/ */
int dm_read_arg(struct dm_arg *arg, struct dm_arg_set *arg_set, int dm_read_arg(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *value, char **error); unsigned *value, char **error);
/* /*
...@@ -395,7 +395,7 @@ int dm_read_arg(struct dm_arg *arg, struct dm_arg_set *arg_set, ...@@ -395,7 +395,7 @@ int dm_read_arg(struct dm_arg *arg, struct dm_arg_set *arg_set,
* arg->min and arg->max further arguments. Either return the size as * arg->min and arg->max further arguments. Either return the size as
* *num_args or, if invalid, return -EINVAL and set *error. * *num_args or, if invalid, return -EINVAL and set *error.
*/ */
int dm_read_arg_group(struct dm_arg *arg, struct dm_arg_set *arg_set, int dm_read_arg_group(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *num_args, char **error); unsigned *num_args, char **error);
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册