CVE-2021-47531: drm/msm: Fix mmap to include VM_IO and VM_DONTDUMP
In the Linux kernel, the following vulnerability has been resolved:
drm/msm: Fix mmap to include VM_IO and VM_DONTDUMP
In commit 510410bfc034 ("drm/msm: Implement mmap as GEM object
function") we switched to a new/cleaner method of doing things. That's
good, but we missed a little bit.
Before that commit, we used to _first_ run through the
drm_gem_mmap_obj() case where `obj->funcs->mmap()` was NULL. That meant
that we ran:
vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
...and _then_ we modified those mappings with our own. Now that
`obj->funcs->mmap()` is no longer NULL we don't run the default
code. It looks like the fact that the vm_flags got VM_IO / VM_DONTDUMP
was important because we're now getting crashes on Chromebooks that
use ARC++ while logging out. Specifically a crash that looks like this
(this is on a 5.10 kernel w/ relevant backports but also seen on a
5.15 kernel):
Unable to handle kernel paging request at virtual address ffffffc008000000
Mem abort info:
ESR = 0x96000006
EC = 0x25: DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
Data abort info:
ISV = 0, ISS = 0x00000006
CM = 0, WnR = 0
swapper pgtable: 4k pages, 39-bit VAs, pgdp=000000008293d000
[ffffffc008000000] pgd=00000001002b3003, p4d=00000001002b3003,
pud=00000001002b3003, pmd=0000000000000000
Internal error: Oops: 96000006 [#1] PREEMPT SMP
[...]
CPU: 7 PID: 15734 Comm: crash_dump64 Tainted: G W 5.10.67 #1 [...]
Hardware name: Qualcomm Technologies, Inc. sc7280 IDP SKU2 platform (DT)
pstate: 80400009 (Nzcv daif +PAN -UAO -TCO BTYPE=--)
pc : __arch_copy_to_user+0xc0/0x30c
lr : copyout+0xac/0x14c
[...]
Call trace:
__arch_copy_to_user+0xc0/0x30c
copy_page_to_iter+0x1a0/0x294
process_vm_rw_core+0x240/0x408
process_vm_rw+0x110/0x16c
__arm64_sys_process_vm_readv+0x30/0x3c
el0_svc_common+0xf8/0x250
do_el0_svc+0x30/0x80
el0_svc+0x10/0x1c
el0_sync_handler+0x78/0x108
el0_sync+0x184/0x1c0
Code: f8408423 f80008c3 910020c6 36100082 (b8404423)
Let's add the two flags back in.
While we're at it, the fact that we aren't running the default means
that we _don't_ need to clear out VM_PFNMAP, so remove that and save
an instruction.
NOTE: it was confirmed that VM_IO was the important flag to fix the
problem I was seeing, but adding back VM_DONTDUMP seems like a sane
thing to do so I'm doing that too.
Security readout for executives and security teams
Plain-English summary
A Linux graphics driver bug can make certain Qualcomm/Chromebook systems crash when memory-mapped GPU objects are handled incorrectly. Public sources describe stability impact, not data theft or remote compromise. Prioritize affected fleets where device availability matters, especially ChromeOS/Android container environments using the msm DRM driver.
Executive priority
Treat as a targeted stability risk rather than a confirmed breach risk. Patch through normal kernel maintenance, accelerating for affected Chromebook or Qualcomm Linux fleets with user-visible crashes or availability obligations.
Technical view
In drm/msm, a GEM mmap change bypassed default drm_gem_mmap_obj flag setup, so VM_IO and VM_DONTDUMP were not set. The fix restores those flags and removes unnecessary VM_PFNMAP clearing. Missing VM_IO was confirmed as relevant to observed kernel oopses on 5.10 backports and 5.15.
Likely exposure
Exposure appears limited to Linux systems using the Qualcomm msm DRM graphics driver, with affected source data naming Linux 5.15 through before 5.15.7 and 5.16 development context. The source specifically cites Chromebook ARC++ logout crashes on Qualcomm SC7280 hardware.
Exploitation context
The bundle provides no evidence of active exploitation, and KEV is false. The described trigger is a kernel crash path during process_vm_readv-related crash dumping, not a documented remote exploit or privilege-escalation technique.
Researcher notes
Evidence is narrow but concrete: the regression followed commit 510410bfc034 and the fix restores VM_IO and VM_DONTDUMP in drm/msm mmap handling. No CWE, CVSS, exploit maturity, or broad product matrix is provided in the bundle.
Mitigation direction
Update to a kernel containing the referenced stable drm/msm fixes.
Check Linux distribution or device vendor advisories for shipped backports.
Prioritize Qualcomm Chromebook or msm DRM fleets showing kernel oopses.
Do not deploy custom fixes without vendor kernel validation.
Validation and detection
Inventory kernels and devices using the msm DRM driver.
Confirm the kernel includes commits 8e2b7fe5e8a4 or 3466d9e217b3.
Review crash telemetry for ARC++ logout or matching kernel oops signatures.
Verify vendor kernel changelogs mention VM_IO and VM_DONTDUMP restoration.
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-2021-47531 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.