CVE-2025-40247

Source
https://cve.org/CVERecord?id=CVE-2025-40247
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-40247.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-40247
Downstream
Published
2025-12-04T16:08:10.696Z
Modified
2026-03-12T03:54:36.737696Z
Summary
drm/msm: Fix pgtable prealloc error path
Details

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

drm/msm: Fix pgtable prealloc error path

The following splat was reported:

Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
Mem abort info:
  ESR = 0x0000000096000004
  EC = 0x25: DABT (current EL), IL = 32 bits
  SET = 0, FnV = 0
  EA = 0, S1PTW = 0
  FSC = 0x04: level 0 translation fault
Data abort info:
  ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
  CM = 0, WnR = 0, TnD = 0, TagAccess = 0
  GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
user pgtable: 4k pages, 48-bit VAs, pgdp=00000008d0fd8000
[0000000000000010] pgd=0000000000000000, p4d=0000000000000000
Internal error: Oops: 0000000096000004 [#1]  SMP
CPU: 5 UID: 1000 PID: 149076 Comm: Xwayland Tainted: G S                  6.16.0-rc2-00809-g0b6974bb4134-dirty #367 PREEMPT
Tainted: [S]=CPU_OUT_OF_SPEC
Hardware name: Qualcomm Technologies, Inc. SM8650 HDK (DT)
pstate: 83400005 (Nzcv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--)
pc : build_detached_freelist+0x28/0x224
lr : kmem_cache_free_bulk.part.0+0x38/0x244
sp : ffff000a508c7a20
x29: ffff000a508c7a20 x28: ffff000a508c7d50 x27: ffffc4e49d16f350
x26: 0000000000000058 x25: 00000000fffffffc x24: 0000000000000000
x23: ffff00098c4e1450 x22: 00000000fffffffc x21: 0000000000000000
x20: ffff000a508c7af8 x19: 0000000000000002 x18: 00000000000003e8
x17: ffff000809523850 x16: ffff000809523820 x15: 0000000000401640
x14: ffff000809371140 x13: 0000000000000130 x12: ffff0008b5711e30
x11: 00000000001058fa x10: 0000000000000a80 x9 : ffff000a508c7940
x8 : ffff000809371ba0 x7 : 781fffe033087fff x6 : 0000000000000000
x5 : ffff0008003cd000 x4 : 781fffe033083fff x3 : ffff000a508c7af8
x2 : fffffdffc0000000 x1 : 0001000000000000 x0 : ffff0008001a6a00
Call trace:
 build_detached_freelist+0x28/0x224 (P)
 kmem_cache_free_bulk.part.0+0x38/0x244
 kmem_cache_free_bulk+0x10/0x1c
 msm_iommu_pagetable_prealloc_cleanup+0x3c/0xd0
 msm_vma_job_free+0x30/0x240
 msm_ioctl_vm_bind+0x1d0/0x9a0
 drm_ioctl_kernel+0x84/0x104
 drm_ioctl+0x358/0x4d4
 __arm64_sys_ioctl+0x8c/0xe0
 invoke_syscall+0x44/0x100
 el0_svc_common.constprop.0+0x3c/0xe0
 do_el0_svc+0x18/0x20
 el0_svc+0x30/0x100
 el0t_64_sync_handler+0x104/0x130
 el0t_64_sync+0x170/0x174
Code: aa0203f5 b26287e2 f2dfbfe2 aa0303f4 (f8737ab6)
---[ end trace 0000000000000000 ]---

Since msmvmajobfree() is called directly from the ioctl, this looks like an error path cleanup issue. Which I think results from prealloccleanup() called without a preceding successful prealloc_allocate() call. So handle that case better.

Patchwork: https://patchwork.freedesktop.org/patch/678677/

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/40xxx/CVE-2025-40247.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
0cf6c71d70d8aa39b8fd0e39c9009602a0e0d300
Fixed
b865da18b6cb878f33b5920693d03f23b9c4d1a3
Fixed
830d68f2cb8ab6fb798bb9555016709a9e012af0

Database specific

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

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
3.12.0
Fixed
6.17.10

Database specific

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