b830ac1d9a
Ben reported a lockup related to rtc. The lockup happens due to: CPU0 CPU1 rtc_irq_set_state() __run_hrtimer() spin_lock_irqsave(&rtc->irq_task_lock) rtc_handle_legacy_irq(); spin_lock(&rtc->irq_task_lock); hrtimer_cancel() while (callback_running); So the running callback never finishes as it's blocked on rtc->irq_task_lock. Use hrtimer_try_to_cancel() instead and drop rtc->irq_task_lock while waiting for the callback. Fix this for both rtc_irq_set_state() and rtc_irq_set_freq(). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reported-by: Ben Greear <greearb@candelatech.com> Cc: John Stultz <john.stultz@linaro.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
class.c | ||
hctosys.c | ||
interface.c | ||
rtc-88pm860x.c | ||
rtc-ab3100.c | ||
rtc-ab8500.c | ||
rtc-at32ap700x.c | ||
rtc-at91rm9200.c | ||
rtc-at91sam9.c | ||
rtc-au1xxx.c | ||
rtc-bfin.c | ||
rtc-bq32k.c | ||
rtc-bq4802.c | ||
rtc-cmos.c | ||
rtc-coh901331.c | ||
rtc-core.h | ||
rtc-davinci.c | ||
rtc-dev.c | ||
rtc-dm355evm.c | ||
rtc-ds1216.c | ||
rtc-ds1286.c | ||
rtc-ds1302.c | ||
rtc-ds1305.c | ||
rtc-ds1307.c | ||
rtc-ds1374.c | ||
rtc-ds1390.c | ||
rtc-ds1511.c | ||
rtc-ds1553.c | ||
rtc-ds1672.c | ||
rtc-ds1742.c | ||
rtc-ds3232.c | ||
rtc-ds3234.c | ||
rtc-efi.c | ||
rtc-em3027.c | ||
rtc-ep93xx.c | ||
rtc-fm3130.c | ||
rtc-generic.c | ||
rtc-imxdi.c | ||
rtc-isl1208.c | ||
rtc-isl12022.c | ||
rtc-jz4740.c | ||
rtc-lib.c | ||
rtc-lpc32xx.c | ||
rtc-m41t80.c | ||
rtc-m41t93.c | ||
rtc-m41t94.c | ||
rtc-m48t35.c | ||
rtc-m48t59.c | ||
rtc-m48t86.c | ||
rtc-max6900.c | ||
rtc-max6902.c | ||
rtc-max8925.c | ||
rtc-max8998.c | ||
rtc-mc13xxx.c | ||
rtc-mpc5121.c | ||
rtc-mrst.c | ||
rtc-msm6242.c | ||
rtc-mv.c | ||
rtc-mxc.c | ||
rtc-nuc900.c | ||
rtc-omap.c | ||
rtc-pcap.c | ||
rtc-pcf2123.c | ||
rtc-pcf8563.c | ||
rtc-pcf8583.c | ||
rtc-pcf50633.c | ||
rtc-pl030.c | ||
rtc-pl031.c | ||
rtc-pm8xxx.c | ||
rtc-proc.c | ||
rtc-ps3.c | ||
rtc-puv3.c | ||
rtc-pxa.c | ||
rtc-r9701.c | ||
rtc-rp5c01.c | ||
rtc-rs5c313.c | ||
rtc-rs5c348.c | ||
rtc-rs5c372.c | ||
rtc-rv3029c2.c | ||
rtc-rx8025.c | ||
rtc-rx8581.c | ||
rtc-s3c.c | ||
rtc-s35390a.c | ||
rtc-sa1100.c | ||
rtc-sh.c | ||
rtc-spear.c | ||
rtc-starfire.c | ||
rtc-stk17ta8.c | ||
rtc-stmp3xxx.c | ||
rtc-sun4v.c | ||
rtc-sysfs.c | ||
rtc-tegra.c | ||
rtc-test.c | ||
rtc-tile.c | ||
rtc-twl.c | ||
rtc-tx4939.c | ||
rtc-v3020.c | ||
rtc-vr41xx.c | ||
rtc-vt8500.c | ||
rtc-wm831x.c | ||
rtc-wm8350.c | ||
rtc-x1205.c |