DF-5200 / manifest.json
{ "finding_id": "DF-5200", "title": "kthread_park() returns without any wait-for-park and kthread_parkme() never deschedules - park/unpark quiescence contract void, drm_sched_entity_fini/amdgpu-reset UAF", "verdict": "reproduced", "impact": "panic", "confidence": "certain", "reproduce": { "build": "kldload amdgpu; cd /tmp/DF-5200 && make", "run": "kldload /tmp/DF-5200/df5200.ko; sysctl hw.df5200.test=1; sysctl hw.df5200.test=2; sysctl hw.df5200.test=3", "expected": "test1: 5/5 rounds 'RAN WHILE PARKED'; test2: 5/5 'UAF WRITE PROVEN ... overlap=yes'; test3: panic 'DF5200: kthread_park() quiescence broken ...'" }, "kernel_refs": [ "sys/dev/drm/linux_kthread.c:103", "sys/dev/drm/linux_kthread.c:110", "sys/dev/drm/linux_kthread.c:126", "sys/dev/drm/linux_kthread.c:132", "sys/dev/drm/scheduler/sched_entity.c:277", "sys/dev/drm/scheduler/sched_main.c:514", "sys/dev/drm/amd/amdgpu/amdgpu_device.c:3412", "sys/dev/drm/amd/amdgpu/amdgpu_debugfs.c:868", "sys/kern/lwkt_thread.c:153" ], "artifacts": [ "df5200.c", "Makefile", "build.sh", "run.sh", "build.log", "run.log", "run.2.log", "panic.txt", "run_fixed.log", "fix.diff", "env.txt", "manifest.json", "verdict.json" ] } |