CVE-2025-39843

Source
https://cve.org/CVERecord?id=CVE-2025-39843
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-39843.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-39843
Downstream
Related
Published
2025-09-19T15:26:17.758Z
Modified
2026-03-20T12:43:04.572548Z
Summary
mm: slub: avoid wake up kswapd in set_track_prepare
Details

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

mm: slub: avoid wake up kswapd in settrackprepare

settrackprepare() can incur lock recursion. The issue is that it is called from hrtimerstartrangens holding the percpu(hrtimerbases)[n].lock, but when enabled CONFIGDEBUGOBJECTSTIMERS, may wake up kswapd in settrackprepare, and try to hold the percpu(hrtimerbases)[n].lock.

Avoid deadlock caused by implicitly waking up kswapd by passing in allocation flags, which do not contain __GFPKSWAPDRECLAIM in the debug_objectsfillpool() case. Inside stack depot they are processed by gfpnestedmask(). Since ___slab_alloc() has preemption disabled, we mask out __GFPDIRECTRECLAIM 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, .ownercpu: 3 Hardware name: Qualcomm Technologies, Inc. Popsicle based on SM8850 (DT) Call trace: spinbug+0x0 rawspinlockirqsave+0x80 hrtimertrytocancel+0x94 taskcontending+0x10c enqueuedlentity+0x2a4 dlserverstart+0x74 enqueuetaskfair+0x568 enqueuetask+0xac doactivatetask+0x14c ttwudoactivate+0xcc trytowakeup+0x6c8 defaultwakefunction+0x20 autoremovewakefunction+0x1c __wakeup+0xac wakeupkswapd+0x19c wakeallkswapds+0x78 __allocpagesslowpath+0x1ac __allocpagesnoprof+0x298 stackdepotsave_flags+0x6b0 stackdepotsave+0x14 settrackprepare+0x5c ___slab_alloc+0xccc __kmalloccachenoprof+0x470 __setpageowner+0x2bc postallochook[jt]+0x1b8 prepnewpage+0x28 getpagefrom_freelist+0x1edc __allocpagesnoprof+0x13c allocslabpage+0x244 allocate_slab+0x7c __slaballoc+0x8e8 kmemcacheallocnoprof+0x450 debugobjectsfillpool+0x22c debugobjectactivate+0x40 enqueuehrtimer[jt]+0xdc hrtimerstartrangens+0x5f8 ...

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/39xxx/CVE-2025-39843.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
5cf909c553e9efed573811de4b3f5172898d5515
Fixed
994b03b9605d36d814c611385fbf90ca6db20aa8
Fixed
522ffe298627cfe72539d72167c2e20e72b5e856
Fixed
243b705a90ed8449f561a271cf251fd2e939f3db
Fixed
eb3240ffd243bfb8b1e9dc568d484ecf9fd660ab
Fixed
850470a8413a8a78e772c4f6bd9fe81ec6bd5b0f

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-39843.json"