DF-3570 / trigger.c
/* DF-3570 — source-level trigger sketch. * * On real Realtek RTL8168FP / RTL8117 silicon (PCI 10ec:8168 with TCR * version field 0x54900000/0x54A00000/0x54B00000 => MACFG_70/71/72) the * DragonFly re(4) attach path panics before the interface ever comes up: * * re_attach (if_re.c) * -> rtl_check_mac_version (re_type = MACFG_70..72) * -> rtl_init_software_variable * re_init_software_variable() * sc->HwSuppDashVer = 3 (re.c:4413-4417) * sc->re_dash = re_check_dash(sc) (re.c:4448-4449) * CmacMemPhysAddress = * MP_ReadOtherFunPciEConfigSpace(...) (re.c:4456) == 0xffffffff (BUG) * -> bus_space_map() never called (re.c:4457-4473 skipped) * sc->re_cmac_handle = NULL (re.c:4487) * -> rtl_exit_oob * re_exit_oob() * case MACFG_70/71/72: Dash2DisableTxRx(sc) (re.c:3588-3596) * Dash2DisableTx() * RE_CMAC_READ_1(sc, RE_CMAC_IBCR2) (re.c:3454) * -> bus_space_read_1(NULL, NULL, 0xF9) * -> *(volatile u_int8_t *)0xF9 (cpu/x86_64/include/bus_dma.h:135) * -> kernel page fault at attach => PANIC * * There is nothing to "run" from userland: the fault is deterministic at * device attach. The PoC for a machine that owns such a NIC is simply: * * # kldload if_re (or boot with the device present / module in loader.conf) * * The audit QEMU guest has only virtio-net hardware (see env.txt), so the * path cannot execute there; this file documents the exact trigger and the * mechanical source proof lives in proof.sh / VERDICT.md. */ int main(void) { return 0; } |