rtc: r7301: Fix a possible sleep-in-atomic bug in rtc7301_read_time
The driver may sleep under a spinlock. The function call path is: rtc7301_read_time (acquire the spinlock) rtc7301_wait_while_busy usleep_range --> may sleep To fix it, usleep_range is replaced with udelay. This bug is found by my static analysis tool(DSAC) and checked by my code review. Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
This commit is contained in:
parent
2da6877f0e
commit
cd8c0bb2bd
|
@ -95,7 +95,7 @@ static int rtc7301_wait_while_busy(struct rtc7301_priv *priv)
|
||||||
if (!(val & RTC7301_CONTROL_BUSY))
|
if (!(val & RTC7301_CONTROL_BUSY))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
usleep_range(200, 300);
|
udelay(300);
|
||||||
}
|
}
|
||||||
|
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
|
|
Loading…
Reference in New Issue