linux/drivers/leds
Steven Rostedt (Google) 292a089d78 treewide: Convert del_timer*() to timer_shutdown*()
Due to several bugs caused by timers being re-armed after they are
shutdown and just before they are freed, a new state of timers was added
called "shutdown".  After a timer is set to this state, then it can no
longer be re-armed.

The following script was run to find all the trivial locations where
del_timer() or del_timer_sync() is called in the same function that the
object holding the timer is freed.  It also ignores any locations where
the timer->function is modified between the del_timer*() and the free(),
as that is not considered a "trivial" case.

This was created by using a coccinelle script and the following
commands:

    $ cat timer.cocci
    @@
    expression ptr, slab;
    identifier timer, rfield;
    @@
    (
    -       del_timer(&ptr->timer);
    +       timer_shutdown(&ptr->timer);
    |
    -       del_timer_sync(&ptr->timer);
    +       timer_shutdown_sync(&ptr->timer);
    )
      ... when strict
          when != ptr->timer
    (
            kfree_rcu(ptr, rfield);
    |
            kmem_cache_free(slab, ptr);
    |
            kfree(ptr);
    )

    $ spatch timer.cocci . > /tmp/t.patch
    $ patch -p1 < /tmp/t.patch

Link: https://lore.kernel.org/lkml/20221123201306.823305113@linutronix.de/
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Acked-by: Pavel Machek <pavel@ucw.cz> [ LED ]
Acked-by: Kalle Valo <kvalo@kernel.org> [ wireless ]
Acked-by: Paolo Abeni <pabeni@redhat.com> [ networking ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-12-25 13:38:09 -08:00
..
blink leds: lgm-sso: switch to using devm_fwnode_gpiod_get() 2022-11-09 13:59:28 +01:00
flash i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rgb pwm: Changes for v6.2-rc1 2022-12-21 09:41:28 -08:00
simple leds: simatic-ipc-leds-gpio: fix incorrect LED to GPIO mapping 2022-10-24 11:32:10 +02:00
trigger treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
Kconfig leds: is31fl319x: Make use of device properties 2022-08-02 16:43:30 +02:00
led-class-flash.c led-class-flash: fix -Wrestrict warning 2021-09-27 16:09:42 +02:00
led-class-multicolor.c
led-class.c leds: led-core: Update fwnode with device_set_node 2022-01-12 19:43:14 +01:00
led-core.c leds: move default_state read from fwnode to core 2021-08-18 08:27:30 +02:00
led-triggers.c leds: trigger: use RCU to protect the led_cdevs list 2021-09-27 16:16:42 +02:00
leds-88pm860x.c
leds-acer-a500.c
leds-adp5520.c
leds-an30259a.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-apu.c
leds-ariel.c
leds-asic3.c
leds-aw2013.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-bcm6328.c leds: leds-bcm6328: Demote kernel-doc abuse 2021-05-28 11:38:55 +02:00
leds-bcm6358.c
leds-bd2802.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-blinkm.c leds: use sysfs_emit() to instead of scnprintf() 2022-12-07 21:05:20 +01:00
leds-clevo-mail.c
leds-cobalt-qube.c
leds-cobalt-raq.c
leds-cpcap.c
leds-cr0014114.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-da903x.c
leds-da9052.c
leds-dac124s085.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-el15203000.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-gpio-register.c leds: leds-gpio-register: Supply description for param 'id' 2021-05-28 11:38:54 +02:00
leds-gpio.c leds: gpio: switch to using devm_fwnode_gpiod_get() 2022-11-09 13:59:21 +01:00
leds-hp6xx.c
leds-ip30.c
leds-ipaq-micro.c
leds-is31fl32xx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-is31fl319x.c leds: is31fl319x: Fix setting current limit for is31fl319{0,1,3} 2022-12-07 21:03:23 +01:00
leds-lm355x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3530.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3532.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3533.c leds: use sysfs_emit() to instead of scnprintf() 2022-12-07 21:05:20 +01:00
leds-lm3642.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3692x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3697.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm36274.c leds: lm36274: Add missed property.h 2021-05-30 23:03:48 +02:00
leds-locomo.c ARM: pxa: split up mach/hardware.h 2022-04-19 16:27:05 +02:00
leds-lp50xx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp55xx-common.c leds: use sysfs_emit() to instead of scnprintf() 2022-12-07 21:05:20 +01:00
leds-lp55xx-common.h
leds-lp3944.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp3952.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp5521.c leds: use sysfs_emit() to instead of scnprintf() 2022-12-07 21:05:20 +01:00
leds-lp5523.c leds: lp5523: fix out-of-bounds bug in lp5523_selftest() 2022-10-28 17:12:27 +02:00
leds-lp5562.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp8501.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp8788.c
leds-lp8860.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lt3593.c leds: lt3593: Put fwnode in any case during ->probe() 2021-08-03 23:49:31 +02:00
leds-max8997.c leds: max8997: Don't error if there is no pdata 2022-10-22 11:55:03 +02:00
leds-max77650.c
leds-mc13783.c
leds-menf21bmc.c
leds-mlxcpld.c leds: leds-mlxcpld: Fix a bunch of kernel-doc formatting issues 2021-05-28 11:39:00 +02:00
leds-mlxreg.c leds: leds-mlxreg: Fix incorrect documentation of struct member 'led_cdev' and 'led_cdev_name' 2021-05-28 11:38:59 +02:00
leds-mt6323.c
leds-net48xx.c
leds-netxbig.c
leds-nic78bx.c
leds-ns2.c
leds-ot200.c
leds-pca955x.c leds-pca955x: Remove the unused function pca95xx_num_led_regs() 2022-10-21 15:08:07 +02:00
leds-pca963x.c leds: pca963: fix misleading indentation 2022-09-26 23:16:37 +02:00
leds-pca9532.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-pm8058.c
leds-powernv.c
leds-pwm.c leds: pwm: add support for default-state device property 2021-08-18 08:27:31 +02:00
leds-rb532.c
leds-regulator.c leds: regulator: Make probeable from device tree 2022-05-05 10:04:52 +02:00
leds-s3c24xx.c
leds-sc27xx-bltc.c
leds-spi-byte.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-ss4200.c
leds-sunfire.c
leds-syscon.c
leds-tca6507.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-ti-lmu-common.c
leds-tlc591xx.c leds: tlc591xx: fix return value check in tlc591xx_probe() 2021-05-10 11:58:54 +02:00
leds-tps6105x.c
leds-turris-omnia.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-wm831x-status.c
leds-wm8350.c
leds-wrap.c
leds.h leds: move default_state read from fwnode to core 2021-08-18 08:27:30 +02:00
Makefile leds: Move pwm-multicolor driver into rgb directory 2022-05-07 23:09:31 +02:00
TODO
uleds.c