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
..
2022-08-04 19:47:37 -07:00
2022-09-15 22:01:24 -04:00
2022-06-10 13:08:06 -04:00
2021-10-16 21:45:54 -04:00
2022-02-22 21:11:03 -05:00
2022-06-21 21:19:23 -04:00
2022-11-17 18:15:45 +00:00
2022-05-16 21:26:50 -04:00
2022-06-21 21:14:54 -04:00
2022-11-08 03:40:54 +00:00
2022-10-11 17:42:58 -06:00
2022-11-30 13:00:29 +01:00
2022-11-26 00:35:16 +00:00
2022-11-25 23:50:35 +00:00
2022-10-18 03:17:09 +00:00
2022-12-14 08:58:51 -08:00
2022-08-04 19:47:37 -07:00
2022-11-26 02:26:02 +00:00
2022-11-07 18:57:39 +00:00
2022-09-15 22:30:26 -04:00
2022-05-23 23:24:10 -04:00
2022-12-01 03:03:36 +00:00
2022-12-14 08:58:51 -08:00
2022-12-14 08:58:51 -08:00
2022-12-14 08:58:51 -08:00
2022-11-17 17:42:38 +00:00
2022-12-14 08:58:51 -08:00
2022-10-22 03:02:52 +00:00
2022-10-27 02:15:46 +00:00
2022-12-14 08:58:51 -08:00
2022-10-22 03:09:45 +00:00
2022-11-18 02:15:15 +01:00
2022-12-25 13:38:09 -08:00
2022-10-22 03:25:59 +00:00
2022-11-17 18:10:59 +00:00
2022-11-26 00:30:05 +00:00
2022-06-21 21:41:19 -04:00
2022-09-06 22:22:24 -04:00
2022-01-24 23:30:28 -05:00
2022-09-25 13:06:00 -04:00
2022-09-25 13:06:00 -04:00
2022-02-22 21:11:03 -05:00
2021-11-29 23:02:13 -05:00
2022-07-07 17:01:22 -04:00
2022-07-07 17:01:22 -04:00
2022-02-22 21:11:03 -05:00
2022-03-29 23:42:18 -04:00
2022-04-25 23:25:11 -04:00
2022-02-22 21:11:02 -05:00
2022-02-22 21:11:03 -05:00
2021-11-29 23:02:13 -05:00
2022-11-08 03:01:12 +00:00
2022-07-26 22:13:29 -04:00
2022-04-26 08:51:56 -04:00
2022-02-22 21:11:03 -05:00
2022-02-22 21:11:04 -05:00
2022-02-22 21:11:04 -05:00
2022-02-22 21:11:04 -05:00
2022-08-01 19:52:03 -04:00
2022-02-22 21:11:03 -05:00
2022-07-13 23:18:26 -04:00
2022-10-18 03:17:09 +00:00
2022-11-25 23:36:23 +00:00
2022-09-25 13:02:23 -04:00
2022-09-25 13:04:17 -04:00
2022-02-22 21:11:04 -05:00
2022-02-22 21:11:04 -05:00
2022-08-31 23:39:57 -04:00
2022-02-22 21:11:05 -05:00
2022-11-26 00:07:37 +00:00
2021-06-29 16:46:08 -04:00
2022-02-22 21:11:02 -05:00
2022-12-19 17:28:49 -08:00
2022-09-25 14:27:47 -04:00
2022-09-25 12:46:59 -04:00
2021-08-30 10:18:25 +02:00
2022-06-21 21:19:23 -04:00
2022-10-22 03:25:59 +00:00
2022-04-25 23:23:05 -04:00
2022-02-27 21:35:30 -05:00
2022-02-22 21:11:03 -05:00
2022-06-27 22:56:21 -04:00
2022-04-26 09:02:44 -04:00
2022-02-22 21:11:05 -05:00
2022-06-26 10:29:44 +10:00
2022-02-27 21:34:02 -05:00
2022-02-22 21:11:07 -05:00
2022-10-22 03:25:59 +00:00
2022-02-22 21:11:06 -05:00
2022-05-23 23:24:10 -04:00
2022-01-25 00:09:41 -05:00
2022-02-22 21:11:07 -05:00
2022-02-22 21:11:07 -05:00
2022-11-08 02:57:01 +00:00
2022-02-22 21:11:03 -05:00
2022-02-22 21:11:06 -05:00
2022-02-22 21:11:06 -05:00
2022-06-07 22:05:14 -04:00
2022-03-29 23:32:26 -04:00
2022-02-22 21:11:06 -05:00
2021-10-16 21:32:16 -04:00
2022-05-19 20:26:21 -04:00
2022-02-22 21:11:06 -05:00
2022-02-22 21:11:02 -05:00
2022-02-22 21:11:02 -05:00
2022-09-06 22:14:14 -04:00
2022-03-15 14:05:02 -04:00
2021-07-28 22:24:27 -04:00
2022-12-14 08:58:51 -08:00
2022-03-01 22:21:50 -05:00
2021-07-21 23:49:02 -04:00
2022-12-14 08:58:51 -08:00
2022-12-01 03:22:23 +00:00
2022-12-14 08:58:51 -08:00
2022-03-29 23:29:19 -04:00
2021-12-22 23:38:29 -05:00
2022-10-18 03:17:09 +00:00
2022-10-18 03:17:09 +00:00
2022-12-14 08:58:51 -08:00
2022-12-14 08:58:51 -08:00
2022-10-22 03:25:59 +00:00
2022-12-14 08:58:51 -08:00
2022-11-08 01:52:52 +00:00
2022-09-07 21:53:48 +02:00
2022-10-22 03:25:59 +00:00
2022-10-18 03:20:31 +00:00
2022-05-08 14:28:18 -04:00
2022-05-02 16:59:11 -04:00
2022-12-01 03:13:55 +00:00
2022-12-01 03:13:55 +00:00
2022-12-01 03:22:23 +00:00
2022-08-22 22:45:25 -04:00
2021-09-28 22:42:06 -04:00
2022-12-22 11:22:31 -08:00
2022-02-22 21:11:07 -05:00
2022-04-18 22:48:31 -04:00
2021-12-22 23:41:13 -05:00
2022-06-28 06:30:26 -06:00
2022-03-08 19:40:01 -07:00
2022-10-07 12:33:18 -07:00
2022-03-08 19:40:00 -07:00
2022-09-25 14:15:03 -04:00
2022-12-14 08:58:51 -08:00
2022-02-22 21:11:03 -05:00
2022-10-22 03:25:59 +00:00
2022-04-06 23:01:54 -04:00
2022-06-07 21:30:56 -04:00
2022-09-25 13:29:53 -04:00
2022-09-25 13:29:53 -04:00
2022-03-01 23:56:28 -05:00
2022-02-22 21:11:07 -05:00
2022-09-06 22:05:58 -04:00
2022-02-22 21:11:07 -05:00
2022-03-30 00:05:42 -04:00