Message ID | 20190625114056.8706-1-florian.knauf@stud.uni-hannover.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drivers/block/loop: Remove deprecated function, range check for max_loop | expand |
Thanks for your patch. On 06/25/2019 04:47 AM, Florian Knauf wrote: > This patch removes the deprecated simple_strtol function from the option > parsing logic in the loopback device driver. It also introduces a range > check for the max_loop parameter to ensure that negative and out-of-range > values (that cannot be represented by int max_loop) are ignored. > > Signed-off-by: Florian Knauf <florian.knauf@stud.uni-hannover.de> > Signed-off-by: Christian Ewert <christian.ewert@stud.uni-hannover.de> > --- > drivers/block/loop.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/block/loop.c b/drivers/block/loop.c > index 102d79575895..acdd028ed486 100644 > --- a/drivers/block/loop.c > +++ b/drivers/block/loop.c > @@ -2289,7 +2289,17 @@ module_exit(loop_exit); > #ifndef MODULE > static int __init max_loop_setup(char *str) > { > - max_loop = simple_strtol(str, NULL, 0); > + long max_loop_long = 0; > + > + /* > + * Range check for max_loop: negative values and values not > + * representable by int are ignored. > + */ > + if (kstrtol(str, 0, &max_loop_long) == 0 && Is there any specific reason to use kstrtol()? Since max_loop global variable is defined as an int, can we use kstrtoint()? > + max_loop_long >= 0 && > + max_loop_long <= INT_MAX) > + max_loop = (int) max_loop_long; > + > return 1; > } > >
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 102d79575895..acdd028ed486 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -2289,7 +2289,17 @@ module_exit(loop_exit); #ifndef MODULE static int __init max_loop_setup(char *str) { - max_loop = simple_strtol(str, NULL, 0); + long max_loop_long = 0; + + /* + * Range check for max_loop: negative values and values not + * representable by int are ignored. + */ + if (kstrtol(str, 0, &max_loop_long) == 0 && + max_loop_long >= 0 && + max_loop_long <= INT_MAX) + max_loop = (int) max_loop_long; + return 1; }