watchdog: Check dev_set_name() return value
authorBo Liu <liubo03@inspur.com>
Tue, 20 Sep 2022 02:03:12 +0000 (22:03 -0400)
committerWim Van Sebroeck <wim@linux-watchdog.org>
Sun, 2 Oct 2022 10:55:38 +0000 (12:55 +0200)
It's possible that dev_set_name() returns -ENOMEM, catch and handle this.

Signed-off-by: Bo Liu <liubo03@inspur.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20220920020312.2383-1-liubo03@inspur.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
drivers/watchdog/watchdog_dev.c

index 54903f3..744b2ab 100644 (file)
@@ -1015,7 +1015,11 @@ static int watchdog_cdev_register(struct watchdog_device *wdd)
        wd_data->dev.groups = wdd->groups;
        wd_data->dev.release = watchdog_core_data_release;
        dev_set_drvdata(&wd_data->dev, wdd);
-       dev_set_name(&wd_data->dev, "watchdog%d", wdd->id);
+       err = dev_set_name(&wd_data->dev, "watchdog%d", wdd->id);
+       if (err) {
+               put_device(&wd_data->dev);
+               return err;
+       }
 
        kthread_init_work(&wd_data->work, watchdog_ping_work);
        hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);