diff mbox series

[-next] watchdog: cpwd: replace simple_strtoul to kstrtoul

Message ID 20240830080220.3545142-1-lihongbo22@huawei.com
State New
Headers show
Series [-next] watchdog: cpwd: replace simple_strtoul to kstrtoul | expand

Commit Message

Hongbo Li Aug. 30, 2024, 8:02 a.m. UTC
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>
---
 drivers/watchdog/cpwd.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Comments

Guenter Roeck Aug. 30, 2024, 8:09 p.m. UTC | #1
On Fri, Aug 30, 2024 at 04:02:20PM +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.
> 

I really don't see value in this patch, sorry. If the driver is still
in use somewhere, it would be much more valuable to convert it to use
the watchdog subsystem API, which would also address the above.

In general people should refrain from "improving" old watchdog drivers
unless they are also converted to use the watchdog subsystem API,
or unless a real bug is fixed.

Guenter
Hongbo Li Aug. 31, 2024, 1:56 a.m. UTC | #2
On 2024/8/31 4:09, Guenter Roeck wrote:
> On Fri, Aug 30, 2024 at 04:02:20PM +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.
>>
> 
> I really don't see value in this patch, sorry. If the driver is still
> in use somewhere, it would be much more valuable to convert it to use
> the watchdog subsystem API, which would also address the above.
> 
> In general people should refrain from "improving" old watchdog drivers
> unless they are also converted to use the watchdog subsystem API,
> or unless a real bug is fixed.

Sorry, I haven't noticed this.

Thanks,
Hongbo

> 
> Guenter
diff mbox series

Patch

diff --git a/drivers/watchdog/cpwd.c b/drivers/watchdog/cpwd.c
index 901b94d456db..978bc6c87a35 100644
--- a/drivers/watchdog/cpwd.c
+++ b/drivers/watchdog/cpwd.c
@@ -550,8 +550,14 @@  static int cpwd_probe(struct platform_device *op)
 	p->reboot = (prop_val ? true : false);
 
 	str_prop = of_get_property(options, "watchdog-timeout", NULL);
-	if (str_prop)
-		p->timeout = simple_strtoul(str_prop, NULL, 10);
+	if (str_prop) {
+		err = kstrtoul(str_prop, 10, &p->timeout);
+		if (err != 0) {
+			pr_err("Unable to parse watchdog-timeout\n");
+			of_node_put(options);
+			goto out_iounmap;
+		}
+	}
 
 	of_node_put(options);