DF-3485 / build.log
build.log — DF-3485 baseline module identity check
===================================================
Shipped module (what the stock kernel loads):
# md5 /usr/src/sys/netgraph/iface/ng_iface.c
dcf849563b5a68f41f32fb7ae2b9a710 (identical to audit tree sys/)
# file /boot/kernel/ng_iface.ko
ELF 64-bit LSB relocatable, x86-64, with debug_info, not stripped
(kernel ident: DragonFly 6.5-DEVELOPMENT #0 Thu Jul 2 06:02:54 UTC 2026)
Rebuild from the unmodified tree (proving the unguarded kfree is the
CURRENT tree's compiled behavior, not a stale binary):
# cd /usr/src/sys/netgraph/iface && make
cc -O2 ... -mindirect-branch=thunk-inline -c ng_iface.c (clean)
cc -Wl,--build-id=sha1 -nostdlib -Wl,--hash-style=sysv -r -Wl,-d -o ng_iface.ko ng_iface.o
# objdump -d --disassemble=ng_iface_constructor ng_iface.ko | ...
(same unguarded pattern: mov %r9,%rdi ; callq _kfree with r9 loaded
straight from the ng_iface_units global, no NULL test — see
disasm.stock.txt for the annotated listing)
Conclusion: source == tree; binary == what the tree compiles to; the panic
is the compiled semantics of the audited source.