Re: [PATCH v4a 00/38] timers: Use timer_shutdown*() before freeing timers

From: Steven Rostedt
Date: Sat Nov 05 2022 - 13:53:54 EST


On Sat, 5 Nov 2022 08:59:36 -0700
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> Others in the series were *definitely* not scripted, doing clearly
> manual cleanups:
>
> - if (dch->timer.function) {
> - del_timer(&dch->timer);
> - dch->timer.function = NULL;
> - }
> + timer_shutdown(&dch->timer);
>
> so no, this does *not* make me feel "ok, this is all trivial".

I just ran the script and the above code turned to:

diff --git a/drivers/isdn/hardware/mISDN/hfcmulti.c b/drivers/isdn/hardware/mISDN/hfcmulti.c
index 4f7eaa17fb27..2695bbde52db 100644
--- a/drivers/isdn/hardware/mISDN/hfcmulti.c
+++ b/drivers/isdn/hardware/mISDN/hfcmulti.c
@@ -4544,7 +4544,7 @@ release_port(struct hfc_multi *hc, struct dchannel *dch)
spin_lock_irqsave(&hc->lock, flags);

if (dch->timer.function) {
- del_timer(&dch->timer);
+ timer_shutdown(&dch->timer);
dch->timer.function = NULL;
}

Which is silly. Because timer_shutdown() makes timer.function = NULL.

That's why I changed it. And it really shouldn't be touching
timer.function anyway.

-- Steve