CVE-2024-46847: mm: vmalloc: ensure vmap_block is initialised before adding to queue
In the Linux kernel, the following vulnerability has been resolved:
mm: vmalloc: ensure vmap_block is initialised before adding to queue
Commit 8c61291fd850 ("mm: fix incorrect vbq reference in
purge_fragmented_block") extended the 'vmap_block' structure to contain a
'cpu' field which is set at allocation time to the id of the initialising
CPU.
When a new 'vmap_block' is being instantiated by new_vmap_block(), the
partially initialised structure is added to the local 'vmap_block_queue'
xarray before the 'cpu' field has been initialised. If another CPU is
concurrently walking the xarray (e.g. via vm_unmap_aliases()), then it
may perform an out-of-bounds access to the remote queue thanks to an
uninitialised index.
This has been observed as UBSAN errors in Android:
| Internal error: UBSAN: array index out of bounds: 00000000f2005512 [#1] PREEMPT SMP
|
| Call trace:
| purge_fragmented_block+0x204/0x21c
| _vm_unmap_aliases+0x170/0x378
| vm_unmap_aliases+0x1c/0x28
| change_memory_common+0x1dc/0x26c
| set_memory_ro+0x18/0x24
| module_enable_ro+0x98/0x238
| do_init_module+0x1b0/0x310
Move the initialisation of 'vb->cpu' in new_vmap_block() ahead of the
addition to the xarray.
Security readout for executives and security teams
Plain-English summary
CVE-2024-46847 is a Linux kernel vmalloc race/initialization flaw. A partially initialized memory-management structure could be visible to another CPU, causing an out-of-bounds access. The public record notes Android UBSAN crashes, but does not show confirmed exploitation or a CVSS score.
Executive priority
Treat as a kernel maintenance priority, not an emergency based on current evidence. Patch through normal expedited kernel update channels for affected Linux and Android-derived assets, with higher priority for internet-scale fleets and devices where kernel crashes affect availability.
Technical view
In new_vmap_block(), a vmap_block was added to a per-CPU vmap_block_queue xarray before vb->cpu was initialized. Concurrent traversal, such as vm_unmap_aliases(), could use an uninitialized CPU index and access a remote queue out of bounds. The upstream fix initializes vb->cpu before xarray insertion.
Likely exposure
Exposure is limited to Linux kernels containing the vulnerable vmalloc change. Systems running affected 6.6/6.9/6.10-era kernels or vendor kernels derived from them should be reviewed, especially Android or highly concurrent SMP deployments.
Exploitation context
The bundle reports observed UBSAN array-index errors in Android. It does not cite CISA KEV, public exploitation, exploit code, remote reachability, privilege requirements, or attacker-controlled trigger conditions.
Researcher notes
Evidence supports a concurrency bug in Linux vmalloc queue handling with observed sanitizer failures. The record does not establish exploitability, impact beyond out-of-bounds access/crash, or affected downstream distributions. Validate against exact vendor kernel trees and backports rather than upstream version labels alone.
Mitigation direction
Identify kernel versions and vendor backport status across fleets.
Apply vendor kernel updates containing the referenced stable fixes.
Prioritize Android, appliance, and cloud images with affected kernel branches.
Monitor vendor advisories for distro-specific fixed package versions.
Avoid deploying custom kernels lacking the vmalloc initialization fix.
Validation and detection
Compare running kernels against vendor advisories and fixed stable commits.
Review kernel changelogs for the vmap_block cpu initialization fix.
Check crash telemetry for UBSAN out-of-bounds reports in purge_fragmented_block.
Confirm updated images are deployed across rebooted hosts.
Track exceptions where vendor fix status is not yet published.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2024-46847 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.