watchdog: mena21_wdt: Fix possible NULL pointer dereference
authorJohannes Thumshirn <jthumshirn@suse.de>
Tue, 2 Jun 2015 10:25:26 +0000 (12:25 +0200)
committerWim Van Sebroeck <wim@iguana.be>
Mon, 22 Jun 2015 13:54:32 +0000 (15:54 +0200)
In a21_wdt_remove() we do a watchdog_unregister_device() on struct
a21_wdt_drv->wdt but never assign it.

Also move the dev_set_drvdata() call in front of the watchdog_register_device()
call, so it doesn't look like an error.

Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/watchdog/mena21_wdt.c

index 96dbba9805796938f2c64a85af8a66ccfdd58ac6..d193a5e79c381775ba683a5cf2153d8b0e5619c7 100644 (file)
@@ -208,14 +208,15 @@ static int a21_wdt_probe(struct platform_device *pdev)
        else if (reset == 7)
                a21_wdt.bootstatus |= WDIOF_EXTERN2;
 
+       drv->wdt = a21_wdt;
+       dev_set_drvdata(&pdev->dev, drv);
+
        ret = watchdog_register_device(&a21_wdt);
        if (ret) {
                dev_err(&pdev->dev, "Cannot register watchdog device\n");
                goto err_register_wd;
        }
 
-       dev_set_drvdata(&pdev->dev, drv);
-
        dev_info(&pdev->dev, "MEN A21 watchdog timer driver enabled\n");
 
        return 0;