linux/drivers/rtc
Mateusz Jończyk 1da0b1cd42 rtc: cmos: take rtc_lock while reading from CMOS
commit 454f47ff46 upstream.

Reading from the CMOS involves writing to the index register and then
reading from the data register. Therefore access to the CMOS has to be
serialized with rtc_lock. This invocation of CMOS_READ was not
serialized, which could cause trouble when other code is accessing CMOS
at the same time.

Use spin_lock_irq() like the rest of the function.

Nothing in kernel modifies the RTC_DM_BINARY bit, so there could be a
separate pair of spin_lock_irq() / spin_unlock_irq() before doing the
math.

Signed-off-by: Mateusz Jończyk <mat.jonczyk@o2.pl>
Reviewed-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: stable@vger.kernel.org
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20211210200131.153887-2-mat.jonczyk@o2.pl
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-01-27 10:53:42 +01:00
..
class.c rtc: class: remove redundant assignment to variable err 2020-04-02 18:47:30 +02:00
dev.c compat_ioctl: move rtc handling into drivers/rtc/dev.c 2019-10-23 17:23:43 +02:00
interface.c rtc: interface: fix kerneldoc comments 2019-11-27 09:31:08 +01:00
Kconfig rtc: rx8010: select REGMAP_I2C 2021-09-26 14:09:02 +02:00
lib.c rtc: lib: check whether tm->tm_year in int32 range 2019-04-06 15:05:31 +02:00
Makefile rtc: rv3032: Add a driver for Microcrystal RV-3032 2020-10-19 22:47:56 +02:00
nvmem.c
proc.c rtc: fix snprintf() checking in is_rtc_hctosys() 2021-07-20 16:05:55 +02:00
rtc-88pm80x.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-88pm860x.c rtc: 88pm860x: remove useless range check 2020-04-18 22:42:06 +02:00
rtc-ab-b5ze-s3.c rtc: Replace HTTP links with HTTPS ones 2020-07-16 11:17:52 +02:00
rtc-ab-eoz9.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-ab3100.c rtc: ab3100: convert to SPDX identifier 2019-04-11 16:42:55 +02:00
rtc-ab8500.c rtc: ab8500: switch to rtc_time64_to_tm/rtc_tm_to_time64 2020-03-16 11:12:11 +01:00
rtc-abx80x.c rtc: abx80x: Provide debug feedback for invalid dt properties 2020-06-06 00:16:24 +02:00
rtc-ac100.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-armada38x.c rtc: armada38x: Use of_device_get_match_data() 2019-10-07 15:49:20 +02:00
rtc-as3722.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
rtc-asm9260.c rtc: asm9260: add the missed check for devm_clk_get 2019-12-23 11:16:23 +01:00
rtc-aspeed.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-at91rm9200.c rtc: at91rm9200: use FIELD_PREP/FIELD_GET 2020-01-15 15:11:10 +01:00
rtc-at91sam9.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-au1xxx.c rtc: au1xxx: switch to rtc_time64_to_tm/rtc_tm_to_time64 2020-03-16 11:12:09 +01:00
rtc-bd70528.c rtc: bd70528: Avoid double error messaging when IRQ absent 2020-03-23 09:27:17 +01:00
rtc-bq32k.c rtc: Replace HTTP links with HTTPS ones 2020-07-16 11:17:52 +02:00
rtc-bq4802.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-brcmstb-waketimer.c rtc: brcmstb-waketimer: add missed clk_disable_unprepare 2019-11-08 16:14:09 +01:00
rtc-cadence.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-cmos.c rtc: cmos: take rtc_lock while reading from CMOS 2022-01-27 10:53:42 +01:00
rtc-coh901331.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-core.h
rtc-cpcap.c rtc: cpcap: fix range 2020-07-02 22:32:00 +02:00
rtc-cros-ec.c cros_ec: treewide: Remove 'include/linux/mfd/cros_ec.h' 2020-01-07 17:36:46 +01:00
rtc-da9052.c rtc: da9052: switch to rtc_time64_to_tm/rtc_tm_to_time64 2020-04-01 12:33:43 +02:00
rtc-da9055.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-da9063.c rtc: da9063: Handle invalid IRQ from platform_get_irq_byname() 2019-10-07 15:49:18 +02:00
rtc-davinci.c rtc: davinci: remove useless error handling 2020-03-16 11:12:09 +01:00
rtc-digicolor.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-dm355evm.c
rtc-ds1216.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1286.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1302.c rtc: ds1302: Remove unused DRV_NAME 2019-11-15 11:58:14 +01:00
rtc-ds1305.c rtc: ds1305: switch to rtc_tm_to_time64 2020-03-16 11:12:10 +01:00
rtc-ds1307.c rtc: ds1307: Fix wday settings for rx8130 2021-05-19 10:13:05 +02:00
rtc-ds1343.c rtc: ds1343: Remove unused struct spi_device in struct ds1343_priv 2019-12-23 11:22:32 +01:00
rtc-ds1347.c rtc: ds1347: handle century register 2019-10-07 15:49:38 +02:00
rtc-ds1374.c rtc: ds1374: remove unused define 2020-07-21 09:56:46 +02:00
rtc-ds1390.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-ds1511.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1553.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1672.c rtc: ds1672: remove unnecessary check 2019-08-21 09:57:23 +02:00
rtc-ds1685.c rtc: ds1685: Fix bank switching to avoid endless loop 2020-09-15 11:24:29 +02:00
rtc-ds1742.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-ds2404.c rtc: ds2404: use hw endiannes variable 2019-05-23 17:42:25 +02:00
rtc-ds3232.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-efi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-em3027.c rtc: em3027: correct month value 2019-11-08 16:14:09 +01:00
rtc-ep93xx.c rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time 2020-12-30 11:54:29 +01:00
rtc-fm3130.c RTC for 5.3 2019-07-17 10:03:50 -07:00
rtc-fsl-ftm-alarm.c rtc: fsl-ftm-alarm: add MODULE_TABLE() 2021-05-19 10:13:03 +02:00
rtc-ftrtc010.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
rtc-generic.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-goldfish.c rtc: goldfish: Enable interrupt in set_alarm() when necessary 2020-07-16 11:15:43 +02:00
rtc-hid-sensor-time.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 335 2019-06-05 17:37:06 +02:00
rtc-hym8563.c rtc: hym8563: Read the valid flag directly instead of caching it 2019-12-23 11:18:06 +01:00
rtc-imx-sc.c rtc: imx-sc: Align imx sc msg structs to 4 2020-03-29 22:08:35 +02:00
rtc-imxdi.c rtc: imxdi: fix trivial typos 2020-07-02 22:32:01 +02:00
rtc-isl1208.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-isl12022.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-isl12026.c rtc: isl12026: convert to i2c_new_dummy_device 2019-07-22 22:30:19 +02:00
rtc-jz4740.c rtc: ingenic: Reset regulator register in probe 2020-05-11 16:35:05 +02:00
rtc-lp8788.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-lpc24xx.c rtc: remove unnecessary error message after platform_get_irq 2020-04-15 09:56:17 +02:00
rtc-lpc32xx.c rtc: lpc32xx: remove .remove 2019-11-08 16:14:09 +01:00
rtc-ls1x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-m41t80.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rtc-m41t93.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m41t94.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m48t35.c rtc: m48t35: remove SGI-IP27 kludge 2020-03-16 11:12:11 +01:00
rtc-m48t59.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m48t86.c rtc: Use devm_platform_ioremap_resource() 2019-10-06 21:04:51 +02:00
rtc-max6900.c
rtc-max6902.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max6916.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8907.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8925.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8997.c
rtc-max8998.c
rtc-max77686.c rtc: max77686: Do not enforce (incorrect) interrupt trigger type 2021-07-25 14:36:16 +02:00
rtc-mc13xxx.c rtc: mc13xxx: fix a double-unlock issue 2020-05-11 16:21:50 +02:00
rtc-mc146818-lib.c rtc: cmos: Revert "rtc: Fix the AltCentury value on AMD/Hygon platform" 2020-01-04 05:31:50 +01:00
rtc-mcp795.c rtc: Replace HTTP links with HTTPS ones 2020-07-16 11:17:52 +02:00
rtc-meson-vrtc.c rtc: meson: simplify the return expression of meson_vrtc_probe 2020-09-29 22:19:15 +02:00
rtc-meson.c rtc: meson: remove redundant assignment to variable retries 2019-11-27 09:31:13 +01:00
rtc-moxart.c rtc: moxart: Convert to SPDX identifier 2019-12-23 11:23:49 +01:00
rtc-mpc5121.c rtc: mpc5121: Use correct return value for mpc5121_rtc_probe() 2020-05-30 04:12:38 +02:00
rtc-mrst.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
rtc-msm6242.c rtc: msm6242: Remove unneeded msm6242_set()/msm6242_clear() functions 2019-11-18 15:23:54 +01:00
rtc-mt2712.c rtc: mt2712: switch to devm_platform_ioremap_resource 2020-04-18 22:42:04 +02:00
rtc-mt6397.c rtc: mt6397: Remove unused member dev 2020-10-15 12:01:29 +02:00
rtc-mt7622.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-mv.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-mxc_v2.c rtc: mxc_v2: add missing MODULE_DEVICE_TABLE 2021-07-25 14:36:12 +02:00
rtc-mxc.c rtc: mxc: Use devm_add_action_or_reset() for calls to clk_disable_unprepare() 2020-03-22 22:10:41 +01:00
rtc-omap.c rtc: omap: drop unused dt-bindings header 2020-03-23 09:27:17 +01:00
rtc-opal.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 114 2019-05-24 17:39:01 +02:00
rtc-palmas.c
rtc-pcap.c rtc: pcap: convert to SPDX identifier 2019-05-08 22:14:36 +02:00
rtc-pcf2123.c rtc: pcf2123: add proper compatible string 2019-08-20 21:42:19 +02:00
rtc-pcf2127.c rtc: pcf2127: only use watchdog when explicitly available 2021-01-09 13:46:22 +01:00
rtc-pcf8523.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rtc-pcf8563.c rtc: pcf8563: Use BIT 2019-12-23 11:23:53 +01:00
rtc-pcf8583.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-pcf50633.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-pcf85063.c rtc: pcf85063: fallback to parent of_node 2021-05-26 12:06:57 +02:00
rtc-pcf85363.c rtc: pcf85363/pcf85263: fix regmap error in set_time 2019-09-01 08:48:28 +02:00
rtc-pic32.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-pl030.c rtc: pl030: switch to rtc_time64_to_tm/rtc_tm_to_time64 2020-03-16 11:12:09 +01:00
rtc-pl031.c rtc: pl031: fix resource leak in pl031_probe 2021-01-06 14:56:53 +01:00
rtc-pm8xxx.c rtc: pm8xxx: clear alarm register when alarm is not enabled 2020-03-23 09:27:17 +01:00
rtc-ps3.c
rtc-pxa.c rtc: Remove dev_err() usage after platform_get_irq() 2019-08-13 10:53:10 +02:00
rtc-r7301.c rtc: Use devm_platform_ioremap_resource() 2019-10-06 21:04:51 +02:00
rtc-r9701.c rtc: r9701: set range 2020-10-19 22:48:55 +02:00
rtc-rc5t583.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
rtc-rc5t619.c rtc: rc5t619: Fix an ERR_PTR vs NULL check 2020-04-15 09:58:24 +02:00
rtc-rk808.c rtc: Remove dev_err() usage after platform_get_irq() 2019-08-13 10:53:10 +02:00
rtc-rp5c01.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-rs5c313.c rtc: rtc-rs5c313: Convert to module_platform_driver() 2020-08-21 00:13:44 +02:00
rtc-rs5c348.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rs5c372.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rtd119x.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-rv3028.c rtc: rv3028: ensure ram configuration registers are saved 2020-10-15 12:09:35 +02:00
rtc-rv3029c2.c rtc: rv3029: remove useless error messages 2019-12-23 11:16:23 +01:00
rtc-rv3032.c rtc: rv3032: fix error handling in rv3032_clkout_set_rate() 2021-11-18 14:04:23 +01:00
rtc-rv8803.c rtc: rv8803: simplify the return expression of rv8803_nvram_write 2020-09-29 22:20:10 +02:00
rtc-rx4581.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rx6110.c rtc: rx6110: Convert to SPDX identifier 2019-11-15 11:58:12 +01:00
rtc-rx8010.c rtc: rx8010: rename rx8010_init_client() to rx8010_init() 2020-09-29 22:18:10 +02:00
rtc-rx8025.c rtc: rx8025: Remove struct i2c_client from struct rx8025_data 2019-12-23 11:22:21 +01:00
rtc-rx8581.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-s3c.c rtc: s3c: Simplify with dev_err_probe() 2020-09-15 10:42:36 +02:00
rtc-s3c.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-s5m.c rtc: s5m: convert to i2c_new_dummy_device 2019-07-23 20:34:31 +02:00
rtc-s35390a.c rtc: s35390a: set range 2019-10-19 22:33:05 +02:00
rtc-sa1100.c rtc: sa1100: switch to rtc_time64_to_tm/rtc_tm_to_time64 2020-03-16 11:12:09 +01:00
rtc-sa1100.h
rtc-sc27xx.c rtc: sc27xx: remove .remove 2019-11-08 16:14:09 +01:00
rtc-sd3078.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-sh.c rtc: sh: Restore devm_ioremap() alignment 2020-02-12 12:21:40 +01:00
rtc-sirfsoc.c rtc: sirfsoc: switch to rtc_time64_to_tm/rtc_tm_to_time64 2020-03-16 11:12:09 +01:00
rtc-snvs.c rtc: snvs: Add necessary clock operations for RTC APIs 2020-05-30 03:17:48 +02:00
rtc-spear.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-st-lpc.c rtc: st-lpc: Constify st_rtc_ops 2020-09-15 11:21:50 +02:00
rtc-starfire.c rtc: starfire: switch to rtc_time64_to_tm 2020-03-16 11:12:09 +01:00
rtc-stk17ta8.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-stm32.c rtc: stm32: Fix unbalanced clk_disable_unprepare() on probe error path 2021-07-14 16:55:44 +02:00
rtc-stmp3xxx.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rtc-sun4v.c
rtc-sun6i.c rtc: sun6i: Fix memleak in sun6i_rtc_clk_init 2021-01-06 14:56:53 +01:00
rtc-sunxi.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-tegra.c rtc: tegra: remove set but unused variable 2019-11-27 09:31:13 +01:00
rtc-test.c rtc: test: enable wakeup flags 2019-05-23 17:44:52 +02:00
rtc-tps6586x.c rtc: tps6586x: Use IRQ_NOAUTOEN flag 2020-01-25 21:50:18 +01:00
rtc-tps65910.c rtc: tps65910: Correct driver module alias 2021-09-18 13:40:05 +02:00
rtc-tps80031.c
rtc-twl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-tx4939.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-v3020.c rtc: v3020: remove set but unused variable 2019-11-27 09:31:13 +01:00
rtc-vr41xx.c compat_ioctl: move rtc handling into drivers/rtc/dev.c 2019-10-23 17:23:43 +02:00
rtc-vt8500.c rtc: vt8500: let the core handle rtc range 2019-10-19 22:33:15 +02:00
rtc-wilco-ec.c rtc: wilco-ec: Handle reading invalid times 2019-10-14 17:49:17 +02:00
rtc-wm831x.c rtc: wm831x: Add IRQF_ONESHOT flag 2019-07-13 21:39:51 +02:00
rtc-wm8350.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-x1205.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-xgene.c rtc: xgene: Remove unused struct device in struct xgene_rtc_dev 2019-11-27 09:31:14 +01:00
rtc-zynqmp.c rtc: zynqmp: Clear alarm interrupt status before interrupt enable 2020-02-12 12:21:42 +01:00
sysfs.c rtc: sysfs: use kobj_to_dev 2020-03-16 11:12:08 +01:00
systohc.c rtc: drop set_mms and set_mmss64 2019-05-08 22:14:36 +02:00