projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
0a966c0
)
rtc: rx8025: protect ctrl1 register update by rtc->ops_lock
author
Akinobu Mita
<
[email protected]
>
Mon, 15 Feb 2016 14:49:07 +0000
(23:49 +0900)
committer
Alexandre Belloni
<
[email protected]
>
Mon, 14 Mar 2016 16:08:19 +0000
(17:08 +0100)
The ctrl1 register is accessed by alarm operations. But it is updated
in threaded interrupt handler without acquiring rtc->ops_lock.
Signed-off-by: Akinobu Mita <
[email protected]
>
Cc: Wolfgang Grandegger <
[email protected]
>
Cc: Alessandro Zummo <
[email protected]
>
Cc: Alexandre Belloni <
[email protected]
>
Signed-off-by: Alexandre Belloni <
[email protected]
>
drivers/rtc/rtc-rx8025.c
patch
|
blob
|
history
diff --git
a/drivers/rtc/rtc-rx8025.c
b/drivers/rtc/rtc-rx8025.c
index 18240f526adede006710f01b4a335296411cc34a..259995281e0df910a6bac4438fe5696a99a07bea 100644
(file)
--- a/
drivers/rtc/rtc-rx8025.c
+++ b/
drivers/rtc/rtc-rx8025.c
@@
-146,8
+146,10
@@
static irqreturn_t rx8025_handle_irq(int irq, void *dev_id)
{
struct i2c_client *client = dev_id;
struct rx8025_data *rx8025 = i2c_get_clientdata(client);
+ struct mutex *lock = &rx8025->rtc->ops_lock;
int status;
+ mutex_lock(lock);
status = rx8025_read_reg(client, RX8025_REG_CTRL2);
if (status < 0)
goto out;
@@
-172,6
+174,8
@@
static irqreturn_t rx8025_handle_irq(int irq, void *dev_id)
}
out:
+ mutex_unlock(lock);
+
return IRQ_HANDLED;
}