If an error occurs after a successful 'of_iomap()' call, it must be undone by a corresponding 'iounmap()' call, as already done in the remove function. Fixes: 3268b5618f38 ("[WATCHDOG] Basic support for GE Fanuc's FPGA based watchdog timer") Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> --- drivers/watchdog/gef_wdt.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/watchdog/gef_wdt.c b/drivers/watchdog/gef_wdt.c index df5406aa7d25..52573176101f 100644 --- a/drivers/watchdog/gef_wdt.c +++ b/drivers/watchdog/gef_wdt.c @@ -264,6 +264,7 @@ static int gef_wdt_probe(struct platform_device *dev) { int timeout = 10; u32 freq; + int ret; bus_clk = 133; /* in MHz */ @@ -280,7 +281,15 @@ static int gef_wdt_probe(struct platform_device *dev) gef_wdt_handler_disable(); /* in case timer was already running */ - return misc_register(&gef_wdt_miscdev); + ret = misc_register(&gef_wdt_miscdev); + if (ret) + goto iounmap_err; + + return 0; + +iounmap_err: + iounmap(gef_wdt_regs); + return ret; } static int gef_wdt_remove(struct platform_device *dev) -- 2.30.2