[PATCH] rtc class locking bugfixes
I got a lockdep warning when running "rtctest" so I though it'd be good to see what was up. - The warning was for rtc->irq_task_lock, gotten from rtc_update_irq() by irq handlerss ... but in a handful of other cases, grabbed without blocking IRQs. - Some callers to rtc_update_irq() were not ensuring IRQs were blocked, yet the routine expects that; make sure all callers block IRQs. It would appear that RTC API tests haven't been part of anyone's kernel regression test suite recently, at least not with lockdep running. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Acked-by: Alessandro Zummo <a.zummo@towertech.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
2601a46474
commit
d728b1e69f
@@ -99,6 +99,7 @@ static ssize_t test_irq_store(struct device *dev,
|
||||
struct rtc_device *rtc = platform_get_drvdata(plat_dev);
|
||||
|
||||
retval = count;
|
||||
local_irq_disable();
|
||||
if (strncmp(buf, "tick", 4) == 0)
|
||||
rtc_update_irq(&rtc->class_dev, 1, RTC_PF | RTC_IRQF);
|
||||
else if (strncmp(buf, "alarm", 5) == 0)
|
||||
@@ -107,6 +108,7 @@ static ssize_t test_irq_store(struct device *dev,
|
||||
rtc_update_irq(&rtc->class_dev, 1, RTC_UF | RTC_IRQF);
|
||||
else
|
||||
retval = -EINVAL;
|
||||
local_irq_enable();
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
Reference in New Issue
Block a user