Re: [RFC][PATCH v3 00/33] timers: Use timer_shutdown*() before freeing timers
From: Guenter Roeck <linux@roeck-us.net>
Date: 2022-11-04 19:22:44
Also in:
alsa-devel, bridge, cgroups, dri-devel, intel-gfx, intel-wired-lan, linux-acpi, linux-block, linux-bluetooth, linux-doc, linux-edac, linux-ext4, linux-input, linux-leds, linux-media, linux-nfs, linux-pm, linux-s390, linux-scsi, linux-sh, linux-staging, linux-usb, linux-wireless, lkml, lvs-devel, netfilter-devel, rcu
On Fri, Nov 04, 2022 at 01:40:53AM -0400, Steven Rostedt wrote:
Back in April, I posted an RFC patch set to help mitigate a common issue
where a timer gets armed just before it is freed, and when the timer
goes off, it crashes in the timer code without any evidence of who the
culprit was. I got side tracked and never finished up on that patch set.
Since this type of crash is still our #1 crash we are seeing in the field,
it has become a priority again to finish it.
This is v3 of that patch set. Thomas Gleixner posted an untested version
that makes timer->function NULL as the flag that it is shutdown. I took that
code, tested it (fixed it up), added more comments, and changed the
name to timer_shutdown_sync(). I also converted it to use WARN_ON_ONCE()
instead of just WARN_ON() as Linus asked for.
Unfortunately the renaming caused some symbol conflicts.
Global definition: timer_shutdown
File Line
0 time.c 93 static inline void timer_shutdown(struct clock_event_device *evt)
1 arm_arch_timer.c 690 static __always_inline int timer_shutdown(const int access,
2 timer-fttmr010.c 105 int (*timer_shutdown)(struct clock_event_device *evt);
3 timer-sp804.c 158 static inline void timer_shutdown(struct clock_event_device *evt)
4 timer.h 239 static inline int timer_shutdown(struct timer_list *timer)
Guenter