DF-5544 / manifest.json
{ "finding_id": "DF-5544", "title": "uhci_pci_detach() swallows device_delete_children() failure: unconditional IRQ/IO/DMA teardown + freed softc under a still-attached child, detach reports success", "file": "sys/bus/u4b/controller/uhci_pci.c", "lines": [374, 411], "verdict_summary": "reproduced/panic (deterministic under harness), fixed by propagated-return fix.diff", "impact": "panic", "reproduce": { "build": "cd /root/df5544 && make KERNBUILDDIR=/usr/obj/usr/src/sys/X86_64_GENERIC", "run": "kldload /root/df5544/veto.ko; sysctl hw.df5544=1; sysctl hw.df5544=2", "expected": "veto0 EBUSY veto -> 'uhci0: detached' + device_detach returns 0 with veto0(attached=1) orphaned -> Fatal trap 12 page fault (NULL kfreed softc) on next touch" }, "kernel_refs": [ "sys/bus/u4b/controller/uhci_pci.c:374", "sys/bus/u4b/controller/uhci_pci.c:380", "sys/bus/u4b/controller/uhci_pci.c:390", "sys/bus/u4b/controller/uhci_pci.c:400", "sys/bus/u4b/controller/uhci_pci.c:404", "sys/bus/u4b/controller/uhci_pci.c:409", "sys/bus/u4b/controller/uhci_pci.c:411", "sys/kern/subr_bus.c:885", "sys/kern/subr_bus.c:2131", "sys/kern/subr_bus.c:897", "sys/bus/u4b/controller/usb_controller.c:242" ], "artifacts": [ "README.md", "VERDICT.md", "veto.c", "Makefile", "build.sh", "run.sh", "build.log", "run.log", "run.fix.log", "panic.txt", "fix_serial_console_full.log", "env.txt", "fix.diff", "manifest.json", "verdict.json" ], "fix": { "status": "fixed", "summary": "check device_delete_children() and propagate the error before any teardown" } } |