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.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 30, 2024 | May 24, 2024 |
| Suse | — | Upgrade dtb-rockchipUpgrade gfs2-kmp-azureUpgrade kernel-rt_debugUpgrade dtb-amdUpgrade kernel-64kb-extraUpgrade kernel-debugUpgrade kernel-rt-extraUpgrade gfs2-kmp-defaultUpgrade kernel-defaultUpgrade reiserfs-kmp-azureUpgrade kernel-debug-vdsoUpgrade cluster-md-kmp-rtUpgrade cluster-md-kmp-64kbUpgrade dtb-marvellUpgrade kernel-rt-optionalUpgrade kernel-azure-extraUpgrade ocfs2-kmp-azureUpgrade kernel-docsUpgrade reiserfs-kmp-defaultUpgrade reiserfs-kmp-64kbUpgrade ocfs2-kmp-defaultUpgrade reiserfs-kmp-rtUpgrade kernel-develUpgrade kernel-azureUpgrade dtb-appleUpgrade kernel-rt_debug-develUpgrade dtb-broadcomUpgrade kernel-docs-htmlUpgrade kernel-source-rtUpgrade kselftests-kmp-rtUpgrade kernel-default-baseUpgrade dtb-socionextUpgrade ocfs2-kmp-64kbUpgrade kernel-default-optionalUpgrade kernel-rt-develUpgrade kernel-azure-optionalUpgrade dtb-renesasUpgrade kernel-rt-vdsoUpgrade dtb-xilinxUpgrade dtb-hisiliconUpgrade kernel-source-vanillaUpgrade dtb-nvidiaUpgrade dtb-caviumUpgrade dtb-alteraUpgrade dtb-sprdUpgrade kselftests-kmp-azureUpgrade kernel-64kb-develUpgrade dtb-allwinnerUpgrade kernel-default-livepatch-develUpgrade kernel-rt_debug-livepatch-develUpgrade dlm-kmp-rtUpgrade kernel-default-livepatchUpgrade gfs2-kmp-rtUpgrade gfs2-kmp-64kbUpgrade kernel-rt-livepatch-develUpgrade dtb-exynosUpgrade kselftests-kmp-defaultUpgrade kernel-zfcpdumpUpgrade kernel-rt_debug-vdsoUpgrade dtb-armUpgrade kernel-macrosUpgrade dtb-lgUpgrade kernel-devel-rtUpgrade dlm-kmp-64kbUpgrade kernel-default-extraUpgrade dlm-kmp-defaultUpgrade kernel-obs-buildUpgrade dtb-mediatekUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-default-develUpgrade kernel-obs-qaUpgrade kernel-rtUpgrade kernel-kvmsmall-vdsoUpgrade kernel-64kbUpgrade kernel-azure-develUpgrade kernel-azure-vdsoUpgrade kernel-syms-rtUpgrade dtb-amazonUpgrade kernel-syms-azureUpgrade kernel-default-base-rebuildUpgrade kernel-64kb-livepatch-develUpgrade kernel-kvmsmall-develUpgrade kernel-sourceUpgrade kselftests-kmp-64kbUpgrade kernel-devel-azureUpgrade kernel-default-vdsoUpgrade kernel-debug-livepatch-develUpgrade cluster-md-kmp-azureUpgrade kernel-symsUpgrade kernel-64kb-optionalUpgrade dtb-freescaleUpgrade dtb-amlogicUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-azureUpgrade kernel-azure-livepatch-develUpgrade kernel-source-azureUpgrade dtb-apmUpgrade ocfs2-kmp-rtUpgrade kernel-rt-livepatchUpgrade dtb-qcomUpgrade kernel-kvmsmallUpgrade kernel-debug-devel | Aug 9, 2024 | May 24, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub