[WATCHDOG] ioremap balanced with iounmap for drivers/char/watchdog/s3c2410_wdt.c
ioremap must be balanced by an iounmap and failing to do so can result in a memory leak. Signed-off-by: Amol Lad <amol@verismonetworks.com> Signed-off-by: Wim Van Sebroeck <wim@iguana.be> Signed-off-by: Andrew Morton <akpm@osdl.org>
This commit is contained in:
parent
ff02cfc76a
commit
e34477e990
|
@ -381,18 +381,21 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
|
||||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||||
if (res == NULL) {
|
if (res == NULL) {
|
||||||
printk(KERN_INFO PFX "failed to get irq resource\n");
|
printk(KERN_INFO PFX "failed to get irq resource\n");
|
||||||
|
iounmap(wdt_base);
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = request_irq(res->start, s3c2410wdt_irq, 0, pdev->name, pdev);
|
ret = request_irq(res->start, s3c2410wdt_irq, 0, pdev->name, pdev);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printk(KERN_INFO PFX "failed to install irq (%d)\n", ret);
|
printk(KERN_INFO PFX "failed to install irq (%d)\n", ret);
|
||||||
|
iounmap(wdt_base);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
wdt_clock = clk_get(&pdev->dev, "watchdog");
|
wdt_clock = clk_get(&pdev->dev, "watchdog");
|
||||||
if (wdt_clock == NULL) {
|
if (wdt_clock == NULL) {
|
||||||
printk(KERN_INFO PFX "failed to find watchdog clock source\n");
|
printk(KERN_INFO PFX "failed to find watchdog clock source\n");
|
||||||
|
iounmap(wdt_base);
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,6 +419,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
|
printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
|
||||||
WATCHDOG_MINOR, ret);
|
WATCHDOG_MINOR, ret);
|
||||||
|
iounmap(wdt_base);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -452,6 +456,7 @@ static int s3c2410wdt_remove(struct platform_device *dev)
|
||||||
wdt_clock = NULL;
|
wdt_clock = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iounmap(wdt_base);
|
||||||
misc_deregister(&s3c2410wdt_miscdev);
|
misc_deregister(&s3c2410wdt_miscdev);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue