[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