| From 5c8b84f410b3819d14cb1ebf32e4b3714b5a6e0b Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Wed, 4 Jul 2018 11:05:55 +0200 |
| Subject: rtc: omap: fix potential crash on power off |
| |
| From: Johan Hovold <johan@kernel.org> |
| |
| commit 5c8b84f410b3819d14cb1ebf32e4b3714b5a6e0b upstream. |
| |
| Do not set the system power-off callback and omap power-off rtc pointer |
| until we're done setting up our device to avoid leaving stale pointers |
| around after a late probe error. |
| |
| Fixes: 97ea1906b3c2 ("rtc: omap: Support ext_wakeup configuration") |
| Cc: stable <stable@vger.kernel.org> # 4.9 |
| Cc: Marcin Niestroj <m.niestroj@grinn-global.com> |
| Cc: Tony Lindgren <tony@atomide.com> |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Acked-by: Tony Lindgren <tony@atomide.com> |
| Reviewed-by: Marcin Niestroj <m.niestroj@grinn-global.com> |
| Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/rtc/rtc-omap.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/rtc/rtc-omap.c |
| +++ b/drivers/rtc/rtc-omap.c |
| @@ -817,13 +817,6 @@ static int omap_rtc_probe(struct platfor |
| goto err; |
| } |
| |
| - if (rtc->is_pmic_controller) { |
| - if (!pm_power_off) { |
| - omap_rtc_power_off_rtc = rtc; |
| - pm_power_off = omap_rtc_power_off; |
| - } |
| - } |
| - |
| /* Support ext_wakeup pinconf */ |
| rtc_pinctrl_desc.name = dev_name(&pdev->dev); |
| |
| @@ -833,6 +826,13 @@ static int omap_rtc_probe(struct platfor |
| return PTR_ERR(rtc->pctldev); |
| } |
| |
| + if (rtc->is_pmic_controller) { |
| + if (!pm_power_off) { |
| + omap_rtc_power_off_rtc = rtc; |
| + pm_power_off = omap_rtc_power_off; |
| + } |
| + } |
| + |
| return 0; |
| |
| err: |