2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-15 08:44:14 +08:00
linux-next/drivers/rtc
Vincent Whitchurch c8fa17d9f0 rtc: fix use-after-free on device removal
If the irqwork is still scheduled or running while the RTC device is
removed, a use-after-free occurs in rtc_timer_do_work().  Cleanup the
timerqueue and ensure the work is stopped to fix this.

 BUG: KASAN: use-after-free in mutex_lock+0x94/0x110
 Write of size 8 at addr ffffff801d846338 by task kworker/3:1/41

 Workqueue: events rtc_timer_do_work
 Call trace:
  mutex_lock+0x94/0x110
  rtc_timer_do_work+0xec/0x630
  process_one_work+0x5fc/0x1344
  ...

 Allocated by task 551:
  kmem_cache_alloc_trace+0x384/0x6e0
  devm_rtc_allocate_device+0xf0/0x574
  devm_rtc_device_register+0x2c/0x12c
  ...

 Freed by task 572:
  kfree+0x114/0x4d0
  rtc_device_release+0x64/0x80
  device_release+0x8c/0x1f4
  kobject_put+0x1c4/0x4b0
  put_device+0x20/0x30
  devm_rtc_release_device+0x1c/0x30
  devm_action_release+0x54/0x90
  release_nodes+0x124/0x310
  devres_release_group+0x170/0x240
  i2c_device_remove+0xd8/0x314
  ...

 Last potentially related work creation:
  insert_work+0x5c/0x330
  queue_work_on+0xcc/0x154
  rtc_set_time+0x188/0x5bc
  rtc_dev_ioctl+0x2ac/0xbd0
  ...

Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20211210160951.7718-1-vincent.whitchurch@axis.com
2022-02-15 23:06:19 +01:00
..
class.c rtc: fix use-after-free on device removal 2022-02-15 23:06:19 +01:00
dev.c rtc: Move variable into switch case statement 2022-01-05 01:03:09 +01:00
interface.c rtc: handle alarms with a minute resolution 2021-11-10 00:45:56 +01:00
Kconfig rtc: Add driver for RTC in Sunplus SP7021 2022-01-05 01:00:29 +01:00
lib_test.c rtc: lib_test: add MODULE_LICENSE 2021-08-10 23:21:46 +02:00
lib.c rtc: Improve performance of rtc_time64_to_tm(). Add tests. 2021-08-10 00:09:21 +02:00
Makefile rtc: Add driver for RTC in Sunplus SP7021 2022-01-05 01:00:29 +01: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-ab8500.c rtc: ab8500: let the core handle the alarm resolution 2021-11-10 00:45:57 +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: support UIE when available 2021-11-10 00:45:57 +01:00
rtc-abx80x.c rtc: abx80x: Add utility function for writing configuration key 2021-02-13 23:03:26 +01: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: Remove unnecessary offset variable checks 2021-07-10 02:42:08 +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: avoid UIP when writing alarm time 2021-12-16 21:50:07 +01: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: da9063: add as wakeup source 2021-12-02 23:23:38 +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-09-25 23:22:28 +02: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 wday settings for rx8130 2021-04-29 23:37:18 +02:00
rtc-ds1343.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds1347.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +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-09-25 23:22:28 +02: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 rtc_lock/rtc_unlock 2021-01-25 23:46:17 +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: Use platform_get_irq() to get the interrupt 2022-01-05 01:04:11 +01:00
rtc-gamecube.c rtc: gamecube: Fix an IS_ERR() vs NULL check 2022-01-16 23:36:09 +01: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: use rtc_lock/rtc_unlock 2021-01-25 23:46:17 +01: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: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01: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: return NULL rather than a plain 0 integer 2021-10-01 23:31:29 +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-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: cmos: Evaluate century appropriate 2022-01-16 23:50:26 +01:00
rtc-mcp795.c rtc: mcp795: Add SPI ID table 2021-10-01 23:28:28 +02:00
rtc-meson-vrtc.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01: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-msc313.c rtc: msc313: Fix unintentional sign extension issues with left shift of a u16 2021-10-01 23:28:46 +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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-mt6397.c rtc: mt6397: refine RTC_TC_MTH 2021-06-01 16:44:09 +01: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_v2.c rtc: mxc_v2: add missing MODULE_DEVICE_TABLE 2021-05-25 00:33:17 +02:00
rtc-mxc.c rtc: mxc: Remove unneeded of_match_ptr() 2021-03-16 08:48:44 +01:00
rtc-ntxec.c rtc: New driver for RTC in Netronix embedded controller 2021-03-10 11:06:33 +00:00
rtc-omap.c rtc: omap: drop unneeded MODULE_ALIAS 2021-09-25 23:26:37 +02: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-09-25 23:22:28 +02:00
rtc-pcf2127.c rtc: pcf2127: Fix typo in comment 2022-01-05 01:02:00 +01:00
rtc-pcf8523.c rtc: pcf8523: add BSM support 2021-10-18 17:38:06 +02:00
rtc-pcf8563.c rtc: pcf8563: Fix the datasheet URL 2021-06-20 23:48:35 +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: add i2c_device_id name matching support 2021-12-01 00:07:25 +01:00
rtc-pcf85363.c rtc: pcf85363: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-pic32.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-pl030.c amba: Make the remove callback return void 2021-02-02 14:25:50 +01:00
rtc-pl031.c ARM updates for 5.12-rc1: 2021-02-22 14:27:07 -08:00
rtc-pm8xxx.c rtc: pm8xxx: Add RTC support for PMIC PMK8350 2021-04-17 00:20:01 +02: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-05 01:05:17 +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: fix incorrect oscillation value on r2221tl 2022-01-05 00:52:10 +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: add BSM support 2021-10-18 17:20:50 +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: let the core handle the alarm resolution 2021-11-10 00:45:57 +01:00
rtc-rv8803.c rtc: rv8803: Add support for the Epson RX8804 RTC 2021-12-02 23:25:47 +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: simplify getting the adapter of a client 2021-09-25 23:27:39 +02:00
rtc-rx8010.c rtc: rx8010: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rx8025.c rtc: rx8025: use .set_offset/.read_offset 2021-11-10 00:45:57 +01:00
rtc-rx8581.c rtc: rx8581: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-s3c.c rtc: s3c: Add time range 2021-10-23 23:57:23 +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: drop unneeded MODULE_ALIAS 2021-09-25 23:26:37 +02:00
rtc-s35390a.c rtc: s35390a: let the core handle the alarm resolution 2021-11-10 00:45:57 +01:00
rtc-sa1100.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-sa1100.h
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: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-snvs.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-spear.c rtc: spear: convert to SPDX identifier 2021-07-10 01:53:57 +02:00
rtc-st-lpc.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +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: Allow probing without an early clock provider 2021-10-23 23:50:27 +02:00
rtc-sunplus.c rtc: sunplus: fix return value in sp_rtc_probe() 2022-01-16 23:50:34 +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-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 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: 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