CVE-2024-49976

tracing/timerlat: Drop interface_lock in stop_kthread()

published October 21, 2024

CVSS
—
EPSS
0%
Percentile
7.0
In the wild
Unconfirmed
What it is

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

tracing/timerlat: Drop interface_lock in stop_kthread()

stop_kthread() is the offline callback for "trace/osnoise:online", since

commit 5bfbcd1ee57b ("tracing/timerlat: Add interface_lock around clearing

of kthread in stop_kthread()"), the following ABBA deadlock scenario is

introduced:

T1 | T2 [BP] | T3 [AP]

osnoise_hotplug_workfn() | work_for_cpu_fn() | cpuhp_thread_fun()

| _cpu_down() | osnoise_cpu_die()

mutex_lock(&interface_lock) | | stop_kthread()

| cpus_write_lock() | mutex_lock(&interface_lock)

cpus_read_lock() | cpuhp_kick_ap() |

As the interface_lock here in just for protecting the "kthread" field of

the osn_var, use xchg() instead to fix this issue. Also use

for_each_online_cpu() back in stop_per_cpu_kthreads() as it can take

cpu_read_lock() again.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00178 · 7.0th percentile
Published
2024-10-21T18:02Z
EPSS history
Timeline
  • 21 OCT 18:02Z
    tracing/timerlat: Drop interface_lock in stop_kthread()
    cvelistv5