summaryrefslogtreecommitdiff
path: root/drivers/rtc
diff options
context:
space:
mode:
authorAlexandre Belloni <alexandre.belloni@bootlin.com>2019-08-19 21:26:49 +0300
committerAlexandre Belloni <alexandre.belloni@bootlin.com>2019-08-20 22:42:05 +0300
commitd0ce6ef7146692a1540b4dd3a68970da6bcd5207 (patch)
tree9f6f0779531d445dd2e2933e67d10378b39bbc0f /drivers/rtc
parent5bdf40dab622d301757f81325d9b80902b3bbae7 (diff)
downloadlinux-d0ce6ef7146692a1540b4dd3a68970da6bcd5207.tar.xz
rtc; pcf2123: fix possible alarm race condition
Clear the flag after disabling the alarm to ensure the alarm doesn't fire between clearing the flag and disabling the alarm. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20190819182656.29744-2-alexandre.belloni@bootlin.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Diffstat (limited to 'drivers/rtc')
-rw-r--r--drivers/rtc/rtc-pcf2123.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c
index 5f604d83289c..829d7a2dd950 100644
--- a/drivers/rtc/rtc-pcf2123.c
+++ b/drivers/rtc/rtc-pcf2123.c
@@ -274,13 +274,13 @@ static int pcf2123_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
dev_dbg(dev, "%s: alm is %ptR\n", __func__, &alm->time);
- /* Ensure alarm flag is clear */
- ret = regmap_update_bits(pdata->map, PCF2123_REG_CTRL2, CTRL2_AF, 0);
+ /* Disable alarm interrupt */
+ ret = regmap_update_bits(pdata->map, PCF2123_REG_CTRL2, CTRL2_AIE, 0);
if (ret)
return ret;
- /* Disable alarm interrupt */
- ret = regmap_update_bits(pdata->map, PCF2123_REG_CTRL2, CTRL2_AIE, 0);
+ /* Ensure alarm flag is clear */
+ ret = regmap_update_bits(pdata->map, PCF2123_REG_CTRL2, CTRL2_AF, 0);
if (ret)
return ret;