mirror of https://github.com/torvalds/linux.git
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>
|
||
|---|---|---|
| .. | ||
| amd-sfh-hid | ||
| i2c-hid | ||
| intel-ish-hid | ||
| surface-hid | ||
| usbhid | ||
| .kunitconfig | ||
| Kconfig | ||
| Makefile | ||
| hid-a4tech.c | ||
| hid-accutouch.c | ||
| hid-alps.c | ||
| hid-apple.c | ||
| hid-appleir.c | ||
| hid-asus.c | ||
| hid-aureal.c | ||
| hid-axff.c | ||
| hid-belkin.c | ||
| hid-betopff.c | ||
| hid-bigbenff.c | ||
| hid-cherry.c | ||
| hid-chicony.c | ||
| hid-cmedia.c | ||
| hid-core.c | ||
| hid-corsair.c | ||
| hid-cougar.c | ||
| hid-cp2112.c | ||
| hid-creative-sb0540.c | ||
| hid-cypress.c | ||
| hid-debug.c | ||
| hid-dr.c | ||
| hid-elan.c | ||
| hid-elecom.c | ||
| hid-elo.c | ||
| hid-emsff.c | ||
| hid-ezkey.c | ||
| hid-ft260.c | ||
| hid-gaff.c | ||
| hid-gembird.c | ||
| hid-generic.c | ||
| hid-gfrm.c | ||
| hid-glorious.c | ||
| hid-google-hammer.c | ||
| hid-gt683r.c | ||
| hid-gyration.c | ||
| hid-holtek-kbd.c | ||
| hid-holtek-mouse.c | ||
| hid-holtekff.c | ||
| hid-hyperv.c | ||
| hid-icade.c | ||
| hid-ids.h | ||
| hid-input.c | ||
| hid-ite.c | ||
| hid-jabra.c | ||
| hid-kensington.c | ||
| hid-keytouch.c | ||
| hid-kye.c | ||
| hid-lcpower.c | ||
| hid-led.c | ||
| hid-lenovo.c | ||
| hid-letsketch.c | ||
| hid-lg-g15.c | ||
| hid-lg.c | ||
| hid-lg.h | ||
| hid-lg2ff.c | ||
| hid-lg3ff.c | ||
| hid-lg4ff.c | ||
| hid-lg4ff.h | ||
| hid-lgff.c | ||
| hid-logitech-dj.c | ||
| hid-logitech-hidpp.c | ||
| hid-macally.c | ||
| hid-magicmouse.c | ||
| hid-maltron.c | ||
| hid-mcp2221.c | ||
| hid-megaworld.c | ||
| hid-mf.c | ||
| hid-microsoft.c | ||
| hid-monterey.c | ||
| hid-multitouch.c | ||
| hid-nintendo.c | ||
| hid-nti.c | ||
| hid-ntrig.c | ||
| hid-ortek.c | ||
| hid-penmount.c | ||
| hid-petalynx.c | ||
| hid-picolcd.h | ||
| hid-picolcd_backlight.c | ||
| hid-picolcd_cir.c | ||
| hid-picolcd_core.c | ||
| hid-picolcd_debugfs.c | ||
| hid-picolcd_fb.c | ||
| hid-picolcd_lcd.c | ||
| hid-picolcd_leds.c | ||
| hid-pl.c | ||
| hid-plantronics.c | ||
| hid-playstation.c | ||
| hid-primax.c | ||
| hid-prodikeys.c | ||
| hid-pxrc.c | ||
| hid-quirks.c | ||
| hid-razer.c | ||
| hid-redragon.c | ||
| hid-retrode.c | ||
| hid-rmi.c | ||
| hid-roccat-arvo.c | ||
| hid-roccat-arvo.h | ||
| hid-roccat-common.c | ||
| hid-roccat-common.h | ||
| hid-roccat-isku.c | ||
| hid-roccat-isku.h | ||
| hid-roccat-kone.c | ||
| hid-roccat-kone.h | ||
| hid-roccat-koneplus.c | ||
| hid-roccat-koneplus.h | ||
| hid-roccat-konepure.c | ||
| hid-roccat-kovaplus.c | ||
| hid-roccat-kovaplus.h | ||
| hid-roccat-lua.c | ||
| hid-roccat-lua.h | ||
| hid-roccat-pyra.c | ||
| hid-roccat-pyra.h | ||
| hid-roccat-ryos.c | ||
| hid-roccat-savu.c | ||
| hid-roccat-savu.h | ||
| hid-roccat.c | ||
| hid-saitek.c | ||
| hid-samsung.c | ||
| hid-semitek.c | ||
| hid-sensor-custom.c | ||
| hid-sensor-hub.c | ||
| hid-sigmamicro.c | ||
| hid-sjoy.c | ||
| hid-sony.c | ||
| hid-speedlink.c | ||
| hid-steam.c | ||
| hid-steelseries.c | ||
| hid-sunplus.c | ||
| hid-thrustmaster.c | ||
| hid-tivo.c | ||
| hid-tmff.c | ||
| hid-topre.c | ||
| hid-topseed.c | ||
| hid-twinhan.c | ||
| hid-u2fzero.c | ||
| hid-uclogic-core.c | ||
| hid-uclogic-params-test.c | ||
| hid-uclogic-params.c | ||
| hid-uclogic-params.h | ||
| hid-uclogic-rdesc-test.c | ||
| hid-uclogic-rdesc.c | ||
| hid-uclogic-rdesc.h | ||
| hid-udraw-ps3.c | ||
| hid-viewsonic.c | ||
| hid-vivaldi-common.c | ||
| hid-vivaldi-common.h | ||
| hid-vivaldi.c | ||
| hid-vrc2.c | ||
| hid-waltop.c | ||
| hid-wiimote-core.c | ||
| hid-wiimote-debug.c | ||
| hid-wiimote-modules.c | ||
| hid-wiimote.h | ||
| hid-xiaomi.c | ||
| hid-xinmo.c | ||
| hid-zpff.c | ||
| hid-zydacron.c | ||
| hidraw.c | ||
| uhid.c | ||
| wacom.h | ||
| wacom_sys.c | ||
| wacom_wac.c | ||
| wacom_wac.h | ||