DF-5476 / manifest.json
{ "finding_id": "DF-5476", "title": "ubsa cfg callbacks chain synchronous 1000 ms-timeout EP0 vendor requests with discarded errors: evil Belkin/eTek/GoHubs/Peracom adapter stretches every tcsetattr to 5.1 s (7.1 s for B0) and first-open line-state cycle to 3.0 s of uninterruptible ucom-taskqueue occupancy, blocking close(2) SIGKILL-immune (measured 9.97 s with one queued B0 tcsetattr) and stalling the USB hub event thread on unplug (user-amplifiable)", "verdict": "reproduced", "impact": "dos", "evidence_class": "KLD-harness-with-production-code", "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64", "reproduce": { "build": "sh build.sh (cd /usr/src/sys/bus/u4b/serial/ub5476 && make; artifact: ubsa5476stall.ko)", "run": "sh run.sh (kldload /root/df5476/ubsa5476stall.ko; kldunload; dmesg | grep UB5476)", "expected": [ "UB5476[A]: closer: unblocked ELAPSED=2877 ms (first open: 3-req line-state task; param bails !LL_READY)", "UB5476[2]: closer: unblocked ELAPSED=7893 ms (+ 1 tcsetattr@9600: 5 reqs + pause)", "UB5476[0]: closer: unblocked ELAPSED=9974 ms (+ 1 tcsetattr@B0: 7 reqs + pause)", "UB5476[B]: closer: unblocked ELAPSED=2035 ms (fix: abort on first error)", "UB5476[C]: closer: unblocked ELAPSED=557 ms (fix: abort + 250 ms bound)" ] }, "kernel_refs": [ "sys/bus/u4b/serial/ubsa.c:346-365", "sys/bus/u4b/serial/ubsa.c:359-360", "sys/bus/u4b/serial/ubsa.c:361-364", "sys/bus/u4b/serial/ubsa.c:374", "sys/bus/u4b/serial/ubsa.c:384", "sys/bus/u4b/serial/ubsa.c:394", "sys/bus/u4b/serial/ubsa.c:424-492", "sys/bus/u4b/serial/ubsa.c:433-435", "sys/bus/u4b/serial/ubsa.c:449", "sys/bus/u4b/serial/ubsa.c:460", "sys/bus/u4b/serial/ubsa.c:478", "sys/bus/u4b/serial/ubsa.c:482", "sys/bus/u4b/serial/ubsa.c:491", "sys/bus/u4b/serial/ubsa.c:535-543", "sys/bus/u4b/serial/usb_serial.c:322", "sys/bus/u4b/serial/usb_serial.c:671-672", "sys/bus/u4b/serial/usb_serial.c:771-778", "sys/bus/u4b/serial/usb_serial.c:801-903", "sys/bus/u4b/serial/usb_serial.c:842", "sys/bus/u4b/serial/usb_serial.c:865", "sys/bus/u4b/serial/usb_serial.c:874-880", "sys/bus/u4b/serial/usb_serial.c:939-957", "sys/bus/u4b/serial/usb_serial.c:394", "sys/bus/u4b/serial/usb_serial.c:1357-1420", "sys/bus/u4b/serial/usb_serial.c:1620-1637", "sys/bus/u4b/serial/usb_serial.c:1626-1628", "sys/bus/u4b/serial/usb_serial.c:1636", "sys/bus/u4b/serial/usb_serial.c:1691-1693", "sys/bus/u4b/usb_request.c:561", "sys/bus/u4b/usb_request.c:643", "sys/bus/u4b/usb_request.c:700-704", "sys/bus/u4b/usb_process.c:364-393" ], "artifacts": [ "ub5476stall_harness.c", "Makefile", "build.sh", "run.sh", "README.md", "VERDICT.md", "build.log", "run.log", "fix.diff", "fix_compile.log", "ubsa5476stall.ko", "env.txt", "manifest.json", "verdict.json" ], "fix": { "status": "fixed", "mechanism": "UBSA_CFG_TIMEOUT 250 ms bound + ubsa_cfg_request() returns usb_error_t + ubsa_cfg_param() aborts on first failed request", "validated_by": "run.log phases B/C (9974 -> 2035 -> 557 ms); fix_compile.log (9/9 hunks, patched production ubsa.ko, zero compiler warnings)" } } |