Re: [PATCH 1/2] watchdog: Add Cadence WDT driver

From: Guenter Roeck
Date: Mon Mar 31 2014 - 20:24:49 EST


On 03/31/2014 03:30 AM, One Thousand Gnomes wrote:

+ wdt->cdns_wdt_notifier.notifier_call = &cdns_wdt_notify_sys;
+ /* Register the reboot notifier */
+ ret = register_reboot_notifier(&wdt->cdns_wdt_notifier);
+ if (ret != 0) {
+ dev_err(&pdev->dev, "cannot register reboot notifier err=%d)\n",
+ ret);
+ return ret;

Your ordering is wrong. If the box reboots between here and the spin lock
in it further down it'll crash in your notifier.

Not only that, the callback also ends up using watchdog_get_drvdata()
which is only set after registering the notifier.

Guenter

As

+ spin_lock_init(&wdt->io_lock);

is needed before the code your notifier calls will work.

+ dev_info(&pdev->dev, "Xilinx Watchdog Timer at %p with timeout %ds%s\n",
+ wdt->regs, cdns_wdt_device->timeout,
+ nowayout ? ", nowayout" : "");

dev_dbg

if every driver felt the need to announce itself on boot you'd have pages
and pages of junk.

Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/