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
..
2021-08-10 23:21:46 +02:00
2021-12-02 23:23:38 +01:00
2021-09-25 23:22:28 +02:00
2021-09-25 23:22:28 +02:00
2019-11-08 16:14:09 +01:00
2019-07-17 10:03:50 -07:00
2021-04-29 23:03:26 +02:00
2021-05-25 00:41:25 +02:00
2021-10-01 23:28:28 +02:00
2021-06-01 16:44:09 +01:00
2021-01-16 23:19:26 +01:00
2021-01-16 23:19:26 +01:00
2021-09-25 23:22:28 +02:00
2021-10-18 17:38:06 +02:00
2021-02-22 14:27:07 -08:00
2021-10-18 17:20:50 +02:00
2021-10-23 23:57:23 +02:00
2021-09-25 23:26:37 +02:00
2020-12-03 23:43:23 +01:00