CVE-2026-98286

drop_monitor: use timer_shutdown_sync() to prevent timer rearming during teardown

State
Published
Severity
Not scored
Published
Oct 6, 2026
Updated
Oct 19, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

drop_monitor: use timer_shutdown_sync() to prevent timer rearming during teardown

In drop_monitor teardown paths (net_dm_trace_off_set(), net_dm_hw_monitor_stop(), and error unwind paths in net_dm_trace_on_set() and net_dm_hw_monitor_start()), per-CPU timers are stopped using timer_delete_sync() followed by cancel_work_sync().

However, there is a circular dependency between send_timer and dm_alert_work: 1) sched_send_work() (timer callback) schedules dm_alert_work. 2) send_dm_alert() / net_dm_hw_summary_work() calls reset_per_cpu_data() or net_dm_hw_reset_per_cpu_data(). 3) If memory allocation fails under memory pressure in the reset function, it re-arms the timer via mod_timer(&data->send_timer, ...).

If dm_alert_work is running concurrently while timer_delete_sync() executes on another CPU, an allocation failure in the worker will re-arm the timer after timer_delete_sync() has already returned. Once cancel_work_sync() completes and module_put() is called, the timer remains active in the timer wheel. If the module is then unloaded, the timer will fire and execute sched_send_work() in freed memory, triggering a kernel panic / use-after-free.

Switch from timer_delete_sync() to timer_shutdown_sync(). This guarantees that any in-flight timer handler has finished and prevents subsequent re-arming attempts from running workers from succeeding. When monitoring is restarted later, timer_setup() is invoked, which cleanly re-initializes the timer.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 9398e9c0b1d44eeb700e9e766c02bcc765c82570 to before 9616b0c67fbd8cc0b49de7b26cdf2ab33747c80eAffected
  • 9398e9c0b1d44eeb700e9e766c02bcc765c82570 to before bda4d9525fb91a2388ee09669421b8d505290864Affected
  • 9398e9c0b1d44eeb700e9e766c02bcc765c82570 to before c391a40f71886b28c082b47270f0e856fa3e1150Affected
  • 2514c7ad115e762562c7bdd58bb1ab3425a98245Affected
  • 439b1164da3612ec7e186e1dc314471e7190bfc7Affected
  • 5.10.27 to before 5.11Affected
  • 5.11.11 to before 5.12Affected
LinuxLinux
  • 5.12Affected
  • before 5.12Not affected
  • 6.18.54 through 6.18.*Not affected
  • 7.2.8 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.