DF-3738 / manifest.json
{ "finding_id": "DF-3738", "title": "callout_stop(&sc->timer) under main_serialize deadlocks against emx_timer's blocking lwkt_serialize_enter (AB-BA; DF-3715 em(4) twin) - mechanism PROVEN on guest via protocol replica", "verdict": "inconclusive_per_family_convention_mechanism_proven", "impact": "dos_mechanism_proven_on_guest_kernel", "reproduce": { "build": "cd /root/emxkmod && make # KMOD replica of if_emx.c callout protocol", "run": "kldload emx_callout_replica.ko; sysctl kern.emxreplica.arm=1; sleep 2; sysctl kern.emxreplica.stop_gc=1; (sysctl kern.emxreplica.stop_blk=1 &); sleep 6; dmesg | grep emxreplica; ps -o pid,stat,wchan,command -ax | grep stop_blk", "expected": "console: 'handler BLOCKED on our serializer ... entering callout_stop() [emx_stop shape]' then SILENCE forever; ps: stopper D4 wchan=costp (kern_timeout.c:920); ps -ax: softclock 0 B0 wchan=slize (lwkt_serialize.c:234). Negative control stop_gc returns with pending=0. Fixed-shape stop_fixed returns pending=0 (fix validated at protocol level)." }, "kernel_refs": [ "sys/dev/netif/emx/if_emx.c:1914", "sys/dev/netif/emx/if_emx.c:1928", "sys/dev/netif/emx/if_emx.c:2030", "sys/dev/netif/emx/if_emx.c:1534", "sys/dev/netif/emx/if_emx.c:4196", "sys/dev/netif/emx/if_emx.c:2026", "sys/kern/kern_timeout.c:1091", "sys/kern/kern_timeout.c:920", "sys/kern/lwkt_serialize.c:234" ], "artifacts": [ "emx_callout_replica.c", "emx_callout_replica_fixed.c", "build.sh", "run.sh", "build.log", "run.log", "env.txt", "fix.diff", "VERDICT.md", "README.md", "verdict.json", "manifest.json" ] } |