Merge git://www.linux-watchdog.org/linux-watchdog
Pull watchdog update from Wim Van Sebroeck: "Fix a kdump issue in hpwdt and a possible NULL dereference" * git://www.linux-watchdog.org/linux-watchdog: watchdog: Fix race condition in registration code watchdog: Convert to devm_ioremap_resource()
This commit is contained in:
@@ -253,11 +253,9 @@ static int ath79_wdt_probe(struct platform_device *pdev)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wdt_base = devm_request_and_ioremap(&pdev->dev, res);
|
wdt_base = devm_ioremap_resource(&pdev->dev, res);
|
||||||
if (!wdt_base) {
|
if (IS_ERR(wdt_base))
|
||||||
dev_err(&pdev->dev, "unable to remap memory region\n");
|
return PTR_ERR(wdt_base);
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
wdt_clk = devm_clk_get(&pdev->dev, "wdt");
|
wdt_clk = devm_clk_get(&pdev->dev, "wdt");
|
||||||
if (IS_ERR(wdt_clk))
|
if (IS_ERR(wdt_clk))
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/err.h>
|
||||||
|
|
||||||
#define MODULE_NAME "DAVINCI-WDT: "
|
#define MODULE_NAME "DAVINCI-WDT: "
|
||||||
|
|
||||||
@@ -221,11 +222,9 @@ static int davinci_wdt_probe(struct platform_device *pdev)
|
|||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
wdt_base = devm_request_and_ioremap(dev, wdt_mem);
|
wdt_base = devm_ioremap_resource(dev, wdt_mem);
|
||||||
if (!wdt_base) {
|
if (IS_ERR(wdt_base))
|
||||||
dev_err(dev, "ioremap failed\n");
|
return PTR_ERR(wdt_base);
|
||||||
return -EADDRNOTAVAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = misc_register(&davinci_wdt_miscdev);
|
ret = misc_register(&davinci_wdt_miscdev);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@@ -330,10 +330,9 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* get the memory region for the watchdog timer */
|
/* get the memory region for the watchdog timer */
|
||||||
wdt_base = devm_request_and_ioremap(dev, wdt_mem);
|
wdt_base = devm_ioremap_resource(dev, wdt_mem);
|
||||||
if (wdt_base == NULL) {
|
if (IS_ERR(wdt_base)) {
|
||||||
dev_err(dev, "failed to devm_request_and_ioremap() region\n");
|
ret = PTR_ERR(wdt_base);
|
||||||
ret = -ENOMEM;
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -34,6 +34,7 @@
|
|||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
|
#include <linux/err.h>
|
||||||
#include <asm/watchdog.h>
|
#include <asm/watchdog.h>
|
||||||
|
|
||||||
#define DRV_NAME "sh-wdt"
|
#define DRV_NAME "sh-wdt"
|
||||||
@@ -249,9 +250,9 @@ static int sh_wdt_probe(struct platform_device *pdev)
|
|||||||
wdt->clk = NULL;
|
wdt->clk = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wdt->base = devm_request_and_ioremap(wdt->dev, res);
|
wdt->base = devm_ioremap_resource(wdt->dev, res);
|
||||||
if (unlikely(!wdt->base)) {
|
if (IS_ERR(wdt->base)) {
|
||||||
rc = -EADDRNOTAVAIL;
|
rc = PTR_ERR(wdt->base);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -523,6 +523,7 @@ int watchdog_dev_register(struct watchdog_device *watchdog)
|
|||||||
int err, devno;
|
int err, devno;
|
||||||
|
|
||||||
if (watchdog->id == 0) {
|
if (watchdog->id == 0) {
|
||||||
|
old_wdd = watchdog;
|
||||||
watchdog_miscdev.parent = watchdog->parent;
|
watchdog_miscdev.parent = watchdog->parent;
|
||||||
err = misc_register(&watchdog_miscdev);
|
err = misc_register(&watchdog_miscdev);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
@@ -531,9 +532,9 @@ int watchdog_dev_register(struct watchdog_device *watchdog)
|
|||||||
if (err == -EBUSY)
|
if (err == -EBUSY)
|
||||||
pr_err("%s: a legacy watchdog module is probably present.\n",
|
pr_err("%s: a legacy watchdog module is probably present.\n",
|
||||||
watchdog->info->identity);
|
watchdog->info->identity);
|
||||||
|
old_wdd = NULL;
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
old_wdd = watchdog;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fill in the data structures */
|
/* Fill in the data structures */
|
||||||
|
Reference in New Issue
Block a user