* re: watchdog: Introduce WDOG_HW_RUNNING flag
@ 2016-03-08 12:10 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2016-03-08 12:10 UTC (permalink / raw)
To: linux; +Cc: linux-watchdog
Hello Guenter Roeck,
This is a semi-automatic email about new static checker warnings.
The patch e6c71e84e4c0: "watchdog: Introduce WDOG_HW_RUNNING flag"
from Feb 28, 2016, leads to the following Smatch complaint:
drivers/watchdog/watchdog_dev.c:752 watchdog_release()
error: we previously assumed 'wdd' could be null (see line 718)
drivers/watchdog/watchdog_dev.c
717 wdd = wd_data->wdd;
718 if (!wdd)
^^^
Old code assume "wdd" can be NULL.
719 goto done;
720
721 /*
722 * We only stop the watchdog if we received the magic character
723 * or if WDIOF_MAGICCLOSE is not set. If nowayout was set then
724 * watchdog_stop will fail.
725 */
726 if (!test_bit(WDOG_ACTIVE, &wdd->status))
727 err = 0;
728 else if (test_and_clear_bit(_WDOG_ALLOW_RELEASE, &wd_data->status) ||
729 !(wdd->info->options & WDIOF_MAGICCLOSE))
730 err = watchdog_stop(wdd);
731
732 /* If the watchdog was not stopped, send a keepalive ping */
733 if (err < 0) {
734 pr_crit("watchdog%d: watchdog did not stop!\n", wdd->id);
735 watchdog_ping(wdd);
736 }
737
738 cancel_delayed_work_sync(&wd_data->work);
739 watchdog_update_worker(wdd);
740
741 /* make sure that /dev/watchdog can be re-opened */
742 clear_bit(_WDOG_DEV_OPEN, &wd_data->status);
743
744 done:
745 mutex_unlock(&wd_data->lock);
746 /*
747 * Allow the owner module to be unloaded again unless the watchdog
748 * is still running. If the watchdog is still running, it can not
749 * be stopped, and its driver must not be unloaded.
750 */
751 if (!watchdog_hw_running(wdd)) {
^^^
New code dereferences it without checking.
752 module_put(wdd->ops->owner);
753 kref_put(&wd_data->kref, watchdog_core_data_release);
754 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2016-03-08 12:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-08 12:10 watchdog: Introduce WDOG_HW_RUNNING flag Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).