[PATCH 8/9] watchdog: w83627hf_wdt: Report all initialization failures in probe
From: Paul Louvel
Date: Sat Jul 25 2026 - 06:31:07 EST
The driver currently logs an error only if the chip initialization
fails. Extend the error reporting to all failure paths in probe to
improve diagnostics.
Signed-off-by: Paul Louvel <paul.louvel@xxxxxxxxxxx>
---
drivers/watchdog/w83627hf_wdt.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/drivers/watchdog/w83627hf_wdt.c b/drivers/watchdog/w83627hf_wdt.c
index 90d41f21aa5e..cf1a3fb3a6fd 100644
--- a/drivers/watchdog/w83627hf_wdt.c
+++ b/drivers/watchdog/w83627hf_wdt.c
@@ -479,12 +479,16 @@ static int wdt_probe(struct platform_device *pdev)
pr_info("WDT driver for %s Super I/O chip initialising\n", id->name);
res = platform_get_resource(pdev, IORESOURCE_IO, 0);
- if (!res)
- return -ENXIO;
+ if (!res) {
+ ret = -ENXIO;
+ goto fail;
+ }
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
- if (!data)
- return -ENOMEM;
+ if (!data) {
+ ret = -ENOMEM;
+ goto fail;
+ }
data->info.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE;
snprintf(data->info.identity, sizeof(data->info.identity),
@@ -524,10 +528,8 @@ static int wdt_probe(struct platform_device *pdev)
wdt_set_timeout(wdd, wdd->timeout);
ret = w83627hf_init(wdd, chip);
- if (ret) {
- pr_err("failed to initialize watchdog (err=%d)\n", ret);
- return ret;
- }
+ if (ret)
+ goto fail;
if (data->early_timer_val) {
if (early_disable) {
@@ -541,16 +543,19 @@ static int wdt_probe(struct platform_device *pdev)
}
if (ret)
- return ret;
+ goto fail;
}
ret = devm_watchdog_register_device(&pdev->dev, wdd);
if (ret)
- return ret;
+ goto fail;
pr_info("initialized. timeout=%d sec (nowayout=%d)\n", wdd->timeout,
nowayout);
+ return 0;
+fail:
+ pr_err("failed to initialize watchdog (err=%d)\n", ret);
return ret;
}
--
2.55.0