]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rtc: abx80x: fix the RTC_VL_CLR clearing all status flags
authorAntoni Pokusinski <apokusinski01@gmail.com>
Wed, 15 Apr 2026 16:06:11 +0000 (18:06 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Mon, 22 Jun 2026 00:03:10 +0000 (02:03 +0200)
The RTC_VL_CLR ioctl intends to clear only the battery low flag (BLF),
however the current implementation writes 0 to the status register,
clearing all status bits.

Fix this by writing back the masked status value so that only BLF is
cleared, preserving other status flags.

Fixes: ffe1c5a2d427 ("rtc: abx80x: Implement RTC_VL_READ,CLR ioctls")
Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
Link: https://patch.msgid.link/20260415160610.127155-2-apokusinski01@gmail.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-abx80x.c

index 00d7de64ed3e722503f53e86f504a37af8f7499f..008a70baa69fea52d82fe1d6fda5e13059759bef 100644 (file)
@@ -545,7 +545,8 @@ static int abx80x_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
 
                status &= ~ABX8XX_STATUS_BLF;
 
-               tmp = i2c_smbus_write_byte_data(client, ABX8XX_REG_STATUS, 0);
+               tmp = i2c_smbus_write_byte_data(client, ABX8XX_REG_STATUS,
+                                               status);
                if (tmp < 0)
                        return tmp;