Message ID | 20240902024534.2288168-1-lihongbo22@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [-next,v3] sh: intc: replace simple_strtoul to kstrtoul | expand |
On Mon, Sep 2, 2024 at 4:37 AM Hongbo Li <lihongbo22@huawei.com> wrote: > The function simple_strtoul performs no error checking > in scenarios where the input value overflows the intended > output variable. > > We can replace the use of the simple_strtoul with the safer > alternatives kstrtoul. For fail case, we also print the extra > message. > > Signed-off-by: Hongbo Li <lihongbo22@huawei.com> > > --- > v3: > - Separate declaration and assignment to make it more consistent. Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert
On Mon, 2024-09-02 at 10:45 +0800, Hongbo Li wrote: > The function simple_strtoul performs no error checking > in scenarios where the input value overflows the intended > output variable. > > We can replace the use of the simple_strtoul with the safer > alternatives kstrtoul. For fail case, we also print the extra > message. > > Signed-off-by: Hongbo Li <lihongbo22@huawei.com> > > --- > v3: > - Separate declaration and assignment to make it more consistent. > > v2: https://lore.kernel.org/all/20240831094310.4148930-1-lihongbo22@huawei.com/T/ > - Pass the error code returned by kstrtoul() suggested by Geert. > > v1: https://lore.kernel.org/all/98c7b473-0b2b-4e47-83f6-35d9f417bb01@huawei.com/T/ > --- > drivers/sh/intc/userimask.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/sh/intc/userimask.c b/drivers/sh/intc/userimask.c > index abe9091827cd..a363f77881d1 100644 > --- a/drivers/sh/intc/userimask.c > +++ b/drivers/sh/intc/userimask.c > @@ -32,8 +32,11 @@ store_intc_userimask(struct device *dev, > const char *buf, size_t count) > { > unsigned long level; > + int ret; > > - level = simple_strtoul(buf, NULL, 10); > + ret = kstrtoul(buf, 10, &level); > + if (ret != 0) > + return ret; > > /* > * Minimal acceptable IRQ levels are in the 2 - 16 range, but Reviewed-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Thanks, I will pick this up later today. Sorry for being super late. Adrian
diff --git a/drivers/sh/intc/userimask.c b/drivers/sh/intc/userimask.c index abe9091827cd..a363f77881d1 100644 --- a/drivers/sh/intc/userimask.c +++ b/drivers/sh/intc/userimask.c @@ -32,8 +32,11 @@ store_intc_userimask(struct device *dev, const char *buf, size_t count) { unsigned long level; + int ret; - level = simple_strtoul(buf, NULL, 10); + ret = kstrtoul(buf, 10, &level); + if (ret != 0) + return ret; /* * Minimal acceptable IRQ levels are in the 2 - 16 range, but
The function simple_strtoul performs no error checking in scenarios where the input value overflows the intended output variable. We can replace the use of the simple_strtoul with the safer alternatives kstrtoul. For fail case, we also print the extra message. Signed-off-by: Hongbo Li <lihongbo22@huawei.com> --- v3: - Separate declaration and assignment to make it more consistent. v2: https://lore.kernel.org/all/20240831094310.4148930-1-lihongbo22@huawei.com/T/ - Pass the error code returned by kstrtoul() suggested by Geert. v1: https://lore.kernel.org/all/98c7b473-0b2b-4e47-83f6-35d9f417bb01@huawei.com/T/ --- drivers/sh/intc/userimask.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)