DF-2929 / manifest.json
{ "finding_id": "DF-2929", "verdict": "reproduced", "impact": "panic (timer-queue memory corruption; wild unlink on production kernels)", "confidence": "certain", "reproduce": { "build": "guest# mkdir -p /root/df2929; cp df2929_mod.c ...; Makefile (KMOD=df2929, SRCS=df2929_mod.c, COPTS+=-I/usr/src/sys/dev/drm/include); cd /root/df2929 && make && kldload ./df2929.ko", "run": "guest# sysctl kern.df2929_run=1 (control -> 'queue ok')\n sysctl kern.df2929_run=2 (raw engine re-init -> 'QUEUE CORRUPT' + panic in systimer_del)\n sysctl kern.df2929_run=5 (real hrtimer_start_range_ns path -> panic in systimer_intr)", "expected": "baseline: 'DF2929 mode=2: forward hops=24 seen_st=8 seen_p=8 ... => QUEUE CORRUPT' then panic: Bad link elm ... prev->next != elm (systimer_del+0xd4 / systimer_intr+0x235 <- pcpu_timer_process_oncpu <- splz_timer); fix build: 'queue ok' x8, dht_fires=+1 per run, no panic" }, "kernel_refs": [ "sys/kern/kern_systimer.c:363", "sys/kern/kern_systimer.c:148", "sys/kern/kern_systimer.c:359-371", "sys/dev/drm/linux_hrtimer.c:88-119", "sys/dev/drm/i915/intel_uncore.c:74-78", "sys/dev/drm/i915/intel_uncore.c:1165-1176" ], "artifacts": [ "README.md", "VERDICT.md", "df2929_mod.c", "df2929_ppollrace.c", "build.sh", "run.sh", "build.log", "run.log", "run.2.log", "run.fix.log", "panic.txt", "env.txt", "fix.diff", "manifest.json", "verdict.json" ] } |