forked from rubenslte/android_kernel_samsung_msm8226
rtc: alarm: Proper handling of spinlock
In alarm_shutdown hook, taking interruptible mutex lock in interrupt disabled context. This patch fixes alarm_shutdown function to call rtc_read_time and rtc_set_alarm APIs in interrupt enabled context. Change-Id: I9392d8908c19365993dccc22504f4b6f83ae8f72 CRs-Fixed: 619657 Signed-off-by: Mohit Aggarwal <maggarwa@codeaurora.org>
This commit is contained in:
+4
-3
@@ -520,8 +520,11 @@ static void alarm_shutdown(struct platform_device *dev)
|
||||
|
||||
spin_lock_irqsave(&alarm_slock, flags);
|
||||
|
||||
if (!power_on_alarm)
|
||||
if (!power_on_alarm) {
|
||||
spin_unlock_irqrestore(&alarm_slock, flags);
|
||||
goto disable_alarm;
|
||||
}
|
||||
spin_unlock_irqrestore(&alarm_slock, flags);
|
||||
|
||||
rtc_read_time(alarm_rtc_dev, &rtc_time);
|
||||
getnstimeofday(&wall_time);
|
||||
@@ -549,11 +552,9 @@ static void alarm_shutdown(struct platform_device *dev)
|
||||
pr_alarm(FLOW, "Power-on alarm set to %lu\n",
|
||||
alarm_time);
|
||||
|
||||
spin_unlock_irqrestore(&alarm_slock, flags);
|
||||
return;
|
||||
|
||||
disable_alarm:
|
||||
spin_unlock_irqrestore(&alarm_slock, flags);
|
||||
rtc_alarm_irq_enable(alarm_rtc_dev, 0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user