diff options
author | Thierry Reding <treding@nvidia.com> | 2014-08-08 17:20:26 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-08 18:57:20 -0400 |
commit | 9f7d7a1d0f36bed7f533807146483e8fdfe12a89 (patch) | |
tree | 4193e3ce968b9e444200bfdb402ac7a756eb2e33 | |
parent | e1d60093ca7341e884578c41a29da7cd1714c80e (diff) |
drivers/rtc/rtc-tps65910.c: fix potential NULL-pointer dereference
The interrupt handler gets the driver data associated with the RTC
device and doesn't check it for validity. This can cause a NULL pointer
being dereferenced when and interrupt fires before the driver data was
properly set up.
Fix this by setting the driver data earlier (before the interrupt is
requested).
Signed-off-by: Thierry Reding <treding@nvidia.com>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/rtc/rtc-tps65910.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/rtc/rtc-tps65910.c b/drivers/rtc/rtc-tps65910.c index 7af00208d637..2583349fbde5 100644 --- a/drivers/rtc/rtc-tps65910.c +++ b/drivers/rtc/rtc-tps65910.c | |||
@@ -258,6 +258,8 @@ static int tps65910_rtc_probe(struct platform_device *pdev) | |||
258 | if (ret < 0) | 258 | if (ret < 0) |
259 | return ret; | 259 | return ret; |
260 | 260 | ||
261 | platform_set_drvdata(pdev, tps_rtc); | ||
262 | |||
261 | irq = platform_get_irq(pdev, 0); | 263 | irq = platform_get_irq(pdev, 0); |
262 | if (irq <= 0) { | 264 | if (irq <= 0) { |
263 | dev_warn(&pdev->dev, "Wake up is not possible as irq = %d\n", | 265 | dev_warn(&pdev->dev, "Wake up is not possible as irq = %d\n", |
@@ -283,8 +285,6 @@ static int tps65910_rtc_probe(struct platform_device *pdev) | |||
283 | return ret; | 285 | return ret; |
284 | } | 286 | } |
285 | 287 | ||
286 | platform_set_drvdata(pdev, tps_rtc); | ||
287 | |||
288 | return 0; | 288 | return 0; |
289 | } | 289 | } |
290 | 290 | ||