git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
scsi: aacraid: Fix udev inquiry race condition
[pandora-kernel.git]
/
drivers
/
watchdog
/
pnx4008_wdt.c
diff --git
a/drivers/watchdog/pnx4008_wdt.c
b/drivers/watchdog/pnx4008_wdt.c
index
c7cf4cb
..
6149332
100644
(file)
--- a/
drivers/watchdog/pnx4008_wdt.c
+++ b/
drivers/watchdog/pnx4008_wdt.c
@@
-254,7
+254,6
@@
static struct miscdevice pnx4008_wdt_miscdev = {
static int __devinit pnx4008_wdt_probe(struct platform_device *pdev)
{
int ret = 0, size;
static int __devinit pnx4008_wdt_probe(struct platform_device *pdev)
{
int ret = 0, size;
- struct resource *res;
if (heartbeat < 1 || heartbeat > MAX_HEARTBEAT)
heartbeat = DEFAULT_HEARTBEAT;
if (heartbeat < 1 || heartbeat > MAX_HEARTBEAT)
heartbeat = DEFAULT_HEARTBEAT;
@@
-262,42
+261,42
@@
static int __devinit pnx4008_wdt_probe(struct platform_device *pdev)
printk(KERN_INFO MODULE_NAME
"PNX4008 Watchdog Timer: heartbeat %d sec\n", heartbeat);
printk(KERN_INFO MODULE_NAME
"PNX4008 Watchdog Timer: heartbeat %d sec\n", heartbeat);
-
res
= platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (
res
== NULL) {
+
wdt_mem
= platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (
wdt_mem
== NULL) {
printk(KERN_INFO MODULE_NAME
"failed to get memory region resouce\n");
return -ENOENT;
}
printk(KERN_INFO MODULE_NAME
"failed to get memory region resouce\n");
return -ENOENT;
}
- size = resource_size(res);
- wdt_mem = request_mem_region(res->start, size, pdev->name);
+ size = resource_size(wdt_mem);
- if (
wdt_mem == NULL
) {
+ if (
!request_mem_region(wdt_mem->start, size, pdev->name)
) {
printk(KERN_INFO MODULE_NAME "failed to get memory region\n");
return -ENOENT;
}
printk(KERN_INFO MODULE_NAME "failed to get memory region\n");
return -ENOENT;
}
- wdt_base = (void __iomem *)IO_ADDRESS(
res
->start);
+ wdt_base = (void __iomem *)IO_ADDRESS(
wdt_mem
->start);
wdt_clk = clk_get(&pdev->dev, NULL);
if (IS_ERR(wdt_clk)) {
ret = PTR_ERR(wdt_clk);
wdt_clk = clk_get(&pdev->dev, NULL);
if (IS_ERR(wdt_clk)) {
ret = PTR_ERR(wdt_clk);
- release_
resource(wdt_mem
);
-
kfree(wdt_mem)
;
+ release_
mem_region(wdt_mem->start, size
);
+
wdt_mem = NULL
;
goto out;
}
ret = clk_enable(wdt_clk);
if (ret) {
goto out;
}
ret = clk_enable(wdt_clk);
if (ret) {
- release_resource(wdt_mem);
- kfree(wdt_mem);
+ release_mem_region(wdt_mem->start, size);
+ wdt_mem = NULL;
+ clk_put(wdt_clk);
goto out;
}
ret = misc_register(&pnx4008_wdt_miscdev);
if (ret < 0) {
printk(KERN_ERR MODULE_NAME "cannot register misc device\n");
goto out;
}
ret = misc_register(&pnx4008_wdt_miscdev);
if (ret < 0) {
printk(KERN_ERR MODULE_NAME "cannot register misc device\n");
- release_
resource(wdt_mem
);
-
kfree(wdt_mem)
;
+ release_
mem_region(wdt_mem->start, size
);
+
wdt_mem = NULL
;
clk_disable(wdt_clk);
clk_put(wdt_clk);
} else {
clk_disable(wdt_clk);
clk_put(wdt_clk);
} else {
@@
-320,8
+319,7
@@
static int __devexit pnx4008_wdt_remove(struct platform_device *pdev)
clk_put(wdt_clk);
if (wdt_mem) {
clk_put(wdt_clk);
if (wdt_mem) {
- release_resource(wdt_mem);
- kfree(wdt_mem);
+ release_mem_region(wdt_mem->start, resource_size(wdt_mem));
wdt_mem = NULL;
}
return 0;
wdt_mem = NULL;
}
return 0;