| From fe3f295ab85d47cf840284e74cd8edfa1f4dfd9f Mon Sep 17 00:00:00 2001 |
| From: Shuiqing Li <shuiqing.li@unisoc.com> |
| Date: Fri, 8 Nov 2019 18:57:12 +0800 |
| Subject: [PATCH] watchdog: sprd: Fix the incorrect pointer getting from driver |
| data |
| |
| commit 39e68d9e7ab276880980ee5386301fb218202192 upstream. |
| |
| The device driver data saved the 'struct sprd_wdt' object, it is |
| incorrect to get 'struct watchdog_device' object from the driver |
| data, thus fix it. |
| |
| Fixes: 477603467009 ("watchdog: Add Spreadtrum watchdog driver") |
| Reported-by: Dongwei Wang <dongwei.wang@unisoc.com> |
| Signed-off-by: Shuiqing Li <shuiqing.li@unisoc.com> |
| Signed-off-by: Baolin Wang <baolin.wang@linaro.org> |
| Reviewed-by: Guenter Roeck <linux@roeck-us.net> |
| Link: https://lore.kernel.org/r/76d4687189ec940baa90cb8d679a8d4c8f02ee80.1573210405.git.baolin.wang@linaro.org |
| Signed-off-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c |
| index 916fb3f96bdc..fb9214c54afe 100644 |
| --- a/drivers/watchdog/sprd_wdt.c |
| +++ b/drivers/watchdog/sprd_wdt.c |
| @@ -330,10 +330,9 @@ static int sprd_wdt_probe(struct platform_device *pdev) |
| |
| static int __maybe_unused sprd_wdt_pm_suspend(struct device *dev) |
| { |
| - struct watchdog_device *wdd = dev_get_drvdata(dev); |
| struct sprd_wdt *wdt = dev_get_drvdata(dev); |
| |
| - if (watchdog_active(wdd)) |
| + if (watchdog_active(&wdt->wdd)) |
| sprd_wdt_stop(&wdt->wdd); |
| sprd_wdt_disable(wdt); |
| |
| @@ -342,7 +341,6 @@ static int __maybe_unused sprd_wdt_pm_suspend(struct device *dev) |
| |
| static int __maybe_unused sprd_wdt_pm_resume(struct device *dev) |
| { |
| - struct watchdog_device *wdd = dev_get_drvdata(dev); |
| struct sprd_wdt *wdt = dev_get_drvdata(dev); |
| int ret; |
| |
| @@ -350,7 +348,7 @@ static int __maybe_unused sprd_wdt_pm_resume(struct device *dev) |
| if (ret) |
| return ret; |
| |
| - if (watchdog_active(wdd)) { |
| + if (watchdog_active(&wdt->wdd)) { |
| ret = sprd_wdt_start(&wdt->wdd); |
| if (ret) { |
| sprd_wdt_disable(wdt); |
| -- |
| 2.7.4 |
| |