CVE-2024-39474

Source
https://cve.org/CVERecord?id=CVE-2024-39474
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-39474.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-39474
Downstream
Related
Published
2024-07-05T06:55:05.178Z
Modified
2026-05-07T04:16:43.873476Z
Summary
mm/vmalloc: fix vmalloc which may return null if called with __GFP_NOFAIL
Details

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

mm/vmalloc: fix vmalloc which may return null if called with _GFPNOFAIL

commit a421ef303008 ("mm: allow !GFP_KERNEL allocations for kvmalloc") includes support for _GFPNOFAIL, but it presents a conflict with commit dd544141b9eb ("vmalloc: back off when the current task is OOM-killed"). A possible scenario is as follows:

process-a __vmallocnoderange(GFP_KERNEL | __GFP_NOFAIL) _vmallocareanode() vmareaallocpages() --> oom-killer send SIGKILL to process-a if (fatalsignalpending(current)) break; --> return NULL;

To fix this, do not check fatalsignalpending() in vmareaalloc_pages() if _GFPNOFAIL set.

This issue occurred during OPLUS KASAN TEST. Below is part of the log -> oom-killer sends signal to process [65731.222840] [ T1308] oom-kill:constraint=CONSTRAINTNONE,nodemask=(null),cpuset=/,memsallowed=0,globaloom,taskmemcg=/apps/uid_10198,task=gs.intelligence,pid=32454,uid=10198

[65731.259685] [T32454] Call trace: [65731.259698] [T32454] dumpbacktrace+0xf4/0x118 [65731.259734] [T32454] showstack+0x18/0x24 [65731.259756] [T32454] dumpstacklvl+0x60/0x7c [65731.259781] [T32454] dumpstack+0x18/0x38 [65731.259800] [T32454] mrdumpcommondie+0x250/0x39c [mrdump] [65731.259936] [T32454] ipanicdie+0x20/0x34 [mrdump] [65731.260019] [T32454] atomicnotifiercallchain+0xb4/0xfc [65731.260047] [T32454] notifydie+0x114/0x198 [65731.260073] [T32454] die+0xf4/0x5b4 [65731.260098] [T32454] diekernelfault+0x80/0x98 [65731.260124] [T32454] __dokernelfault+0x160/0x2a8 [65731.260146] [T32454] dobadarea+0x68/0x148 [65731.260174] [T32454] domemabort+0x151c/0x1b34 [65731.260204] [T32454] el1abort+0x3c/0x5c [65731.260227] [T32454] el1h64synchandler+0x54/0x90 [65731.260248] [T32454] el1h64sync+0x68/0x6c

[65731.260269] [T32454] zerofsdecompressqueue+0x7f0/0x2258 --> be->decompressedpages = kvcalloc(be->nrpages, sizeof(struct page *), GFPKERNEL | __GFP_NOFAIL); kernel panic by NULL pointer dereference. erofs assume kvmalloc with __GFPNOFAIL never return NULL. [65731.260293] [T32454] zerofsrunqueue+0xf30/0x104c [65731.260314] [T32454] zerofs_readahead+0x4f0/0x968 [65731.260339] [T32454] readpages+0x170/0xadc [65731.260364] [T32454] pagecacheraunbounded+0x874/0xf30 [65731.260388] [T32454] pagecacheraorder+0x24c/0x714 [65731.260411] [T32454] filemapfault+0xbf0/0x1a74 [65731.260437] [T32454] _dofault+0xd0/0x33c [65731.260462] [T32454] handlemmfault+0xf74/0x3fe0 [65731.260486] [T32454] domemabort+0x54c/0x1b34 [65731.260509] [T32454] el0da+0x44/0x94 [65731.260531] [T32454] el0t64synchandler+0x98/0xb4 [65731.260553] [T32454] el0t64sync+0x198/0x19c

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/39xxx/CVE-2024-39474.json",
    "cna_assigner": "Linux"
}
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
9376130c390a76fac2788a5d6e1a149017b4ab50
Fixed
198a80833e3421d4c9820a4ae907120adf598c91
Fixed
c55d3564ad25ce87ab7cc6af251f9574faebd8da
Fixed
758678b65164b2158fc1de411092191cb3c394d4
Fixed
8e0545c83d672750632f46e3f9ad95c48c91a0fc

Database specific

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

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.17.0
Fixed
6.1.95
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.34
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.9.5

Database specific

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