[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025091903-CVE-2025-39843-0702@gregkh>
Date: Fri, 19 Sep 2025 17:28:07 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2025-39843: mm: slub: avoid wake up kswapd in set_track_prepare
From: Greg Kroah-Hartman <gregkh@...nel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
mm: slub: avoid wake up kswapd in set_track_prepare
set_track_prepare() can incur lock recursion.
The issue is that it is called from hrtimer_start_range_ns
holding the per_cpu(hrtimer_bases)[n].lock, but when enabled
CONFIG_DEBUG_OBJECTS_TIMERS, may wake up kswapd in set_track_prepare,
and try to hold the per_cpu(hrtimer_bases)[n].lock.
Avoid deadlock caused by implicitly waking up kswapd by passing in
allocation flags, which do not contain __GFP_KSWAPD_RECLAIM in the
debug_objects_fill_pool() case. Inside stack depot they are processed by
gfp_nested_mask().
Since ___slab_alloc() has preemption disabled, we mask out
__GFP_DIRECT_RECLAIM from the flags there.
The oops looks something like:
BUG: spinlock recursion on CPU#3, swapper/3/0
lock: 0xffffff8a4bf29c80, .magic: dead4ead, .owner: swapper/3/0, .owner_cpu: 3
Hardware name: Qualcomm Technologies, Inc. Popsicle based on SM8850 (DT)
Call trace:
spin_bug+0x0
_raw_spin_lock_irqsave+0x80
hrtimer_try_to_cancel+0x94
task_contending+0x10c
enqueue_dl_entity+0x2a4
dl_server_start+0x74
enqueue_task_fair+0x568
enqueue_task+0xac
do_activate_task+0x14c
ttwu_do_activate+0xcc
try_to_wake_up+0x6c8
default_wake_function+0x20
autoremove_wake_function+0x1c
__wake_up+0xac
wakeup_kswapd+0x19c
wake_all_kswapds+0x78
__alloc_pages_slowpath+0x1ac
__alloc_pages_noprof+0x298
stack_depot_save_flags+0x6b0
stack_depot_save+0x14
set_track_prepare+0x5c
___slab_alloc+0xccc
__kmalloc_cache_noprof+0x470
__set_page_owner+0x2bc
post_alloc_hook[jt]+0x1b8
prep_new_page+0x28
get_page_from_freelist+0x1edc
__alloc_pages_noprof+0x13c
alloc_slab_page+0x244
allocate_slab+0x7c
___slab_alloc+0x8e8
kmem_cache_alloc_noprof+0x450
debug_objects_fill_pool+0x22c
debug_object_activate+0x40
enqueue_hrtimer[jt]+0xdc
hrtimer_start_range_ns+0x5f8
...
The Linux kernel CVE team has assigned CVE-2025-39843 to this issue.
Affected and fixed versions
===========================
Issue introduced in 5.19 with commit 5cf909c553e9efed573811de4b3f5172898d5515 and fixed in 6.1.151 with commit 994b03b9605d36d814c611385fbf90ca6db20aa8
Issue introduced in 5.19 with commit 5cf909c553e9efed573811de4b3f5172898d5515 and fixed in 6.6.105 with commit 522ffe298627cfe72539d72167c2e20e72b5e856
Issue introduced in 5.19 with commit 5cf909c553e9efed573811de4b3f5172898d5515 and fixed in 6.12.46 with commit 243b705a90ed8449f561a271cf251fd2e939f3db
Issue introduced in 5.19 with commit 5cf909c553e9efed573811de4b3f5172898d5515 and fixed in 6.16.6 with commit eb3240ffd243bfb8b1e9dc568d484ecf9fd660ab
Issue introduced in 5.19 with commit 5cf909c553e9efed573811de4b3f5172898d5515 and fixed in 6.17-rc5 with commit 850470a8413a8a78e772c4f6bd9fe81ec6bd5b0f
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2025-39843
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
mm/slub.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/994b03b9605d36d814c611385fbf90ca6db20aa8
https://git.kernel.org/stable/c/522ffe298627cfe72539d72167c2e20e72b5e856
https://git.kernel.org/stable/c/243b705a90ed8449f561a271cf251fd2e939f3db
https://git.kernel.org/stable/c/eb3240ffd243bfb8b1e9dc568d484ecf9fd660ab
https://git.kernel.org/stable/c/850470a8413a8a78e772c4f6bd9fe81ec6bd5b0f
Powered by blists - more mailing lists