Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bde9d73d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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()
parents 5647ac0a 60403f7a
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -253,11 +253,9 @@ static int ath79_wdt_probe(struct platform_device *pdev)
		return -EINVAL;
	}

	wdt_base = devm_request_and_ioremap(&pdev->dev, res);
	if (!wdt_base) {
		dev_err(&pdev->dev, "unable to remap memory region\n");
		return -ENOMEM;
	}
	wdt_base = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(wdt_base))
		return PTR_ERR(wdt_base);

	wdt_clk = devm_clk_get(&pdev->dev, "wdt");
	if (IS_ERR(wdt_clk))
+4 −5
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <linux/device.h>
#include <linux/clk.h>
#include <linux/slab.h>
#include <linux/err.h>

#define MODULE_NAME "DAVINCI-WDT: "

@@ -221,11 +222,9 @@ static int davinci_wdt_probe(struct platform_device *pdev)
		return -ENOENT;
	}

	wdt_base = devm_request_and_ioremap(dev, wdt_mem);
	if (!wdt_base) {
		dev_err(dev, "ioremap failed\n");
		return -EADDRNOTAVAIL;
	}
	wdt_base = devm_ioremap_resource(dev, wdt_mem);
	if (IS_ERR(wdt_base))
		return PTR_ERR(wdt_base);

	ret = misc_register(&davinci_wdt_miscdev);
	if (ret < 0) {
+3 −4
Original line number Diff line number Diff line
@@ -330,10 +330,9 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
	}

	/* get the memory region for the watchdog timer */
	wdt_base = devm_request_and_ioremap(dev, wdt_mem);
	if (wdt_base == NULL) {
		dev_err(dev, "failed to devm_request_and_ioremap() region\n");
		ret = -ENOMEM;
	wdt_base = devm_ioremap_resource(dev, wdt_mem);
	if (IS_ERR(wdt_base)) {
		ret = PTR_ERR(wdt_base);
		goto err;
	}

+4 −3
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@
#include <linux/slab.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <linux/err.h>
#include <asm/watchdog.h>

#define DRV_NAME "sh-wdt"
@@ -249,9 +250,9 @@ static int sh_wdt_probe(struct platform_device *pdev)
		wdt->clk = NULL;
	}

	wdt->base = devm_request_and_ioremap(wdt->dev, res);
	if (unlikely(!wdt->base)) {
		rc = -EADDRNOTAVAIL;
	wdt->base = devm_ioremap_resource(wdt->dev, res);
	if (IS_ERR(wdt->base)) {
		rc = PTR_ERR(wdt->base);
		goto err;
	}

+2 −1
Original line number Diff line number Diff line
@@ -523,6 +523,7 @@ int watchdog_dev_register(struct watchdog_device *watchdog)
	int err, devno;

	if (watchdog->id == 0) {
		old_wdd = watchdog;
		watchdog_miscdev.parent = watchdog->parent;
		err = misc_register(&watchdog_miscdev);
		if (err != 0) {
@@ -531,9 +532,9 @@ int watchdog_dev_register(struct watchdog_device *watchdog)
			if (err == -EBUSY)
				pr_err("%s: a legacy watchdog module is probably present.\n",
					watchdog->info->identity);
			old_wdd = NULL;
			return err;
		}
		old_wdd = watchdog;
	}

	/* Fill in the data structures */