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 msm_vma_job_free() is called directly from the ioctl, this looks
like an error path cleanup issue. Which I think results from
prealloc_cleanup() called without a preceding successful
prealloc_allocate() call. So handle that case better.
Reported-by: Connor Abbott <cwabbott0@gmail.com>
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/678677/
Message-ID: <
20251006153542.419998-1-robin.clark@oss.qualcomm.com>