linux/drivers/rtc
Haoxiang Li c9630d27cd rtc: cmos: unregister HPET IRQ handler on probe failure
[ Upstream commit a5bb580df0 ]

cmos_do_probe() registers cmos_interrupt() as the HPET RTC IRQ
handler before requesting the RTC IRQ and registering the RTC
device. If either request_irq() or devm_rtc_register_device()
fails afterwards, the error path leaves the HPET RTC IRQ handler
installed. This leaves a stale handler behind and make a later
hpet_register_irq_handler() fail with -EBUSY.

Track whether the HPET handler was registered successfully and
undo the registration on the probe error path. Also mask the HPET
RTC IRQ bits to match the normal shutdown cleanup.

Fixes: 9d8af78b07 ("rtc: add HPET RTC emulation to RTC_DRV_CMOS")
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
Link: https://patch.msgid.link/20260623100848.2127281-1-haoxiang_li2024@163.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-07-24 15:51:41 +02:00
..
class.c rtc: Fix offset calculation for .start_secs < 0 2025-06-27 11:05:09 +01: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: Alarm race handling should not discard preceding error 2026-03-04 07:19:56 -05:00
Kconfig rtc: mt6397: select IRQ_DOMAIN instead of depending on it 2024-03-26 18:21:34 -04:00
lib.c rtc: Make rtc_time64_to_tm() support dates before 1970 2025-06-27 11:05:09 +01:00
lib_test.c rtc: test: Fix invalid format specifier. 2024-03-26 18:21:15 -04:00
Makefile rtc: move RTC_LIB_KUNIT_TEST to proper location 2021-08-10 23:22:20 +02:00
nvmem.c rtc: nvmem: emit an error message when nvmem registration fails 2020-11-19 12:50:12 +01:00
proc.c rtc: fix snprintf() checking in is_rtc_hctosys() 2021-05-25 00:36:11 +02:00
rtc-88pm80x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-88pm860x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ab-b5ze-s3.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ab-eoz9.c rtc: ab-eoz9: don't fail temperature reads on undervoltage notification 2024-12-14 19:51:21 +01:00
rtc-ab8500.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-abx80x.c rtc: abx80x: fix the RTC_VL_CLR clearing all status flags 2026-07-24 15:51:40 +02:00
rtc-ac100.c rtc: ac100: use rtc_lock/rtc_unlock 2021-01-25 23:45:37 +01:00
rtc-armada38x.c rtc: armada38x: remove armada38x_rtc_ops_noirq 2021-01-16 23:19:26 +01: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: use rtc_lock/rtc_unlock 2021-01-25 23:46:16 +01:00
rtc-aspeed.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-at91rm9200.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-at91sam9.c rtc: at91sam9: fix OF node leak in probe() error path 2024-10-17 15:11:41 +02:00
rtc-au1xxx.c rtc: au1xxx: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-bd70528.c rtc: bd70528: Drop BD70528 support 2021-06-20 22:24:52 +02:00
rtc-bq32k.c rtc: bq32k: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01: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: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-cadence.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-cmos.c rtc: cmos: unregister HPET IRQ handler on probe failure 2026-07-24 15:51:41 +02:00
rtc-core.h rtc: move rtc_add_group/s definitions 2018-09-28 14:20:59 +02:00
rtc-cpcap.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-cros-ec.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-da9052.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01: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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-davinci.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-digicolor.c rtc: digicolor: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-dm355evm.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
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: Add SPI ID table 2021-11-18 19:16:58 +01:00
rtc-ds1305.c rtc: ds1305: use rtc_lock/rtc_unlock 2021-01-25 23:46:16 +01:00
rtc-ds1307.c rtc: ds1307: Fix off-by-one issue with wday for rx8130 2026-07-24 15:51:41 +02:00
rtc-ds1343.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds1347.c rtc: ds1347: fix value written to century register 2023-01-12 11:58:56 +01:00
rtc-ds1374.c rtc: ds1374: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-ds1390.c rtc: ds1390: Add SPI ID table 2021-11-18 19:16:59 +01:00
rtc-ds1511.c rtc: ds1511: remove unused function 2021-04-17 11:21:04 +02:00
rtc-ds1553.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds1672.c rtc: ds1672: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-ds1685.c rtc: ds1685: use EXPORT_SYMBOL_GPL for ds1685_rtc_poweroff 2023-09-06 21:28:37 +01:00
rtc-ds1742.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds2404.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds3232.c rtc: ds3232: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-efi.c rtc: efi: Remove the repeated module alias 2021-05-25 00:39:58 +02: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-03 23:49:31 +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-04-17 11:21:04 +02:00
rtc-ftrtc010.c rtc: ftrtc010: Fix error handling in ftrtc010_rtc_probe 2022-06-14 18:36:07 +02: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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-hid-sensor-time.c iio: hid-sensors: lighten exported symbols by moving to IIO_HID namespace 2021-06-16 14:53:13 +01:00
rtc-hym8563.c rtc: hym8563: fix incorrect maximum clock rate handling 2025-08-28 16:24:11 +02:00
rtc-imx-sc.c rtc: imx-sc: remove .read_alarm 2021-04-29 23:03:26 +02:00
rtc-imxdi.c rtc: imxdi: add wakeup support 2021-05-25 00:41:25 +02:00
rtc-isl1208.c rtc: isl1208: Fix return value of nvmem callbacks 2024-08-19 05:45:20 +02: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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-jz4740.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01: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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ls1x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-m41t80.c rtc: m41t80: correct kerneldoc function names 2021-06-20 22:19:46 +02: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 rtc: m48t59: use platform_get_irq_optional 2021-03-11 09:48:09 +01:00
rtc-m48t86.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-max6900.c rtc: max6900: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
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: max8997: Fix the returned value in case of error in 'max8997_rtc_read_alarm()' 2018-11-22 18:11:35 +01:00
rtc-max8998.c rtc: maxim: Add SPDX license identifiers 2018-08-14 23:38:45 +02:00
rtc-max77686.c rtc: max77686: Do not enforce (incorrect) interrupt trigger type 2021-06-20 22:22:13 +02:00
rtc-mc13xxx.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-mc146818-lib.c rtc: mc146818-lib: extract mc146818_avoid_UIP 2022-12-14 11:37:18 +01:00
rtc-mcp795.c rtc: mcp795: Add SPI ID table 2021-11-18 19:16:59 +01:00
rtc-meson-vrtc.c rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time 2023-05-11 23:00:35 +09:00
rtc-meson.c rtc: meson: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-moxart.c rtc: moxart: Convert to SPDX identifier 2019-12-23 11:23:49 +01:00
rtc-mpc5121.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01: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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-mt6397.c rtc: mt6397: check return value after calling platform_get_resource() 2022-06-14 18:36:07 +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: mv: remove mv_rtc_alarm_ops 2021-01-16 23:19:26 +01:00
rtc-mxc.c rtc: mxc: Remove unneeded of_match_ptr() 2021-03-16 08:48:44 +01:00
rtc-mxc_v2.c rtc: mxc_v2: Add missing clk_disable_unprepare() 2022-12-31 13:14:38 +01:00
rtc-ntxec.c rtc: ntxec: fix OF node reference imbalance 2026-06-01 17:35:16 +02:00
rtc-omap.c rtc: omap: include header for omap_rtc_power_off_program prototype 2023-05-11 23:00:35 +09:00
rtc-opal.c rtc: opal: constify opal_rtc_ops 2021-01-16 23:19:26 +01:00
rtc-palmas.c rtc: palmas: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-pcap.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-pcf2123.c rtc: pcf2123: Add SPI ID table 2021-11-18 19:16:59 +01:00
rtc-pcf2127.c rtc: pcf2127: clear minute/second interrupt 2025-12-07 06:09:24 +09:00
rtc-pcf8523.c rtc: pcf8523: rename register and bit defines 2021-07-10 23:18:30 +02:00
rtc-pcf8563.c rtc: pcf8563: fix incorrect maximum clock rate handling 2025-08-28 16:24:12 +02: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: fix incorrect maximum clock rate handling 2025-08-28 16:24:11 +02:00
rtc-pcf85363.c rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call 2023-11-20 11:08:27 +01:00
rtc-pic32.c rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe() 2022-12-31 13:14:37 +01:00
rtc-pl030.c amba: Make the remove callback return void 2021-02-02 14:25:50 +01:00
rtc-pl031.c rtc: pl031: fix rtc features null pointer dereference 2022-04-08 14:22:56 +02:00
rtc-pm8xxx.c rtc: pm8xxx: fix set-alarm race 2023-03-10 09:39:55 +01:00
rtc-ps3.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-pxa.c rtc: pxa: fix null pointer dereference 2022-01-27 11:05:34 +01:00
rtc-r7301.c rtc: r7301: Replace spin_lock_irqsave with spin_lock in hard IRQ 2021-02-06 00:50:47 +01:00
rtc-r9701.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01: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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rk808.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rp5c01.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rs5c313.c rtc: rtc-rs5c313: Convert to module_platform_driver() 2020-08-21 00:13:44 +02:00
rtc-rs5c348.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rs5c372.c rtc: rs5c372: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rtd119x.c rtc: rtd119x: Fix format of SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-rv3028.c rtc: rv3028: fix incorrect maximum clock rate handling 2025-08-28 16:24:12 +02:00
rtc-rv3029c2.c rtc: rv3029: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rv3032.c rtc: rv3032: fix EERD location 2025-06-04 14:37:57 +02:00
rtc-rv8803.c rtc: rv8803: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01: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: add ACPI bindings to I2C 2021-03-23 22:23:22 +01:00
rtc-rx8010.c rtc: rx8010: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rx8025.c rtc: rx8025: fix incorrect register reference 2025-12-07 06:09:26 +09:00
rtc-rx8581.c rtc: rx8581: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-s3c.c rtc: s3c: quiet maybe-unused variable warning 2021-02-06 00:59:16 +01: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: set range 2021-08-06 10:31:59 +02:00
rtc-s35390a.c rtc: s35390a: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-sa1100.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-sa1100.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtc-sc27xx.c rtc: sc27xx: Fix format of SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-sd3078.c rtc: sd3078: quiet maybe-unused variable warning 2021-02-06 00:58:26 +01:00
rtc-sh.c rtc: sh: assign correct interrupts with DT 2025-06-27 11:05:16 +01:00
rtc-snvs.c rtc: snvs: Allow a time difference on clock register read 2022-12-31 13:14:34 +01:00
rtc-spear.c rtc: spear: convert to SPDX identifier 2021-07-10 01:53:57 +02:00
rtc-st-lpc.c rtc: st-lpc: Use IRQF_NO_AUTOEN flag in request_irq() 2024-12-14 19:51:19 +01:00
rtc-starfire.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-stk17ta8.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-stm32.c rtc: stm32: Fix unbalanced clk_disable_unprepare() on probe error path 2021-06-20 22:28:02 +02:00
rtc-stmp3xxx.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-sun4v.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-sun6i.c rtc: sun6i: Always export the internal oscillator 2023-03-11 13:57:30 +01:00
rtc-sunxi.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-tegra.c rtc: tegra: Replace spin_lock_irqsave with spin_lock in hard IRQ 2021-02-06 00:50:47 +01:00
rtc-test.c rtc: test: remove debug message 2020-12-03 23:43:23 +01:00
rtc-tps6586x.c rtc: tps6586x: convert to SPDX identifier 2021-07-10 01:53:40 +02:00
rtc-tps65910.c rtc: tps65910: Correct driver module alias 2021-08-17 23:36:22 +02:00
rtc-tps80031.c rtc: tps80031: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-twl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-v3020.c rtc: v3020: remove redundant initialization of variable retval 2021-06-20 22:29:50 +02:00
rtc-vr41xx.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-vt8500.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-wilco-ec.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-wm831x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-wm8350.c rtc: wm8350: Handle error for wm8350_register_irq 2022-04-13 20:58:59 +02:00
rtc-x1205.c rtc: x1205: Fix Xicor X1205 vendor prefix 2025-10-19 16:21:40 +02:00
rtc-xgene.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-zynqmp.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
sysfs.c rtc: sysfs: Correct kerneldoc function name hctosys_show() 2021-06-20 22:18:05 +02:00