DF-4325 / run.log
=== DF-4325 sf_txeof TX completion-index OOB — guest run Sat Sep 19 12:48:02 UTC 2026 ===
uname:
--- phase A: gcc -Warray-bounds STATIC PROOF (first build attempt) ---
sf_ring_harness.c: In function 'run_tx':
sf_ring_harness.c:123:27: error: array subscript 255 is above array bounds of 'struct sf_tx_bufdesc_type0[128]' [-Werror=array-bounds]
cur_tx = &ld->sf_tx_dlist[idx]; /* OOB by construction */
~~~~~~~~~~~~~~~^~~~~
sf_ring_harness.c:123:27: error: array subscript 255 is above array bounds of 'struct sf_tx_bufdesc_type0[128]' [-Werror=array-bounds]
sf_ring_harness.c: In function 'run_sysctl':
sf_ring_harness.c:195:9: error: array subscript 2047 is above array bounds of 'struct sf_rx_bufdesc_type0[256]' [-Werror=array-bounds]
desc = &ld->sf_rx_dlist_big[cur_rx->sf_endidx];
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sf_ring_harness.c:195:29: error: array subscript 2047 is above array bounds of 'struct sf_rx_bufdesc_type0[256]' [-Werror=array-bounds]
desc = &ld->sf_rx_dlist_big[cur_rx->sf_endidx];
~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
sf_ring_harness.c:195:29: error: array subscript 2047 is above array bounds of 'struct sf_rx_bufdesc_type0[256]' [-Werror=array-bounds]
sf_ring_harness.c:195:29: error: array subscript 2047 is above array bounds of 'struct sf_rx_bufdesc_type0[256]' [-Werror=array-bounds]
sf_ring_harness.c:195:29: error: array subscript 2047 is above array bounds of 'struct sf_rx_bufdesc_type0[256]' [-Werror=array-bounds]
sf_ring_harness.c:195:29: error: array subscript 2047 is above array bounds of 'struct sf_rx_bufdesc_type0[256]' [-Werror=array-bounds]
sf_ring_harness.c:195:29: error: array subscript 2047 is above array bounds of 'struct sf_rx_bufdesc_type0[256]' [-Werror=array-bounds]
cc1: all warnings being treated as errors
*** Error code 1
--- phase B: mode 1 (OOB read + NULL write + underflow, no wild free) ---
--- phase C: mode 2 (REAL m_freem on OOB-read pointer -> panic) ---
sfrh: === DF-4325 sf_txeof sf_index OOB (REAL m_freem) ===
sfrh[tx]: sf_index=0x7ff8 -> desc idx=255 (SF_TX_DLIST_CNT=128) idx*128=32640 ring_bytes=16384 -> OUT OF BOUNDS BY 16256 bytes
sfrh[tx]: OOB READ at blk+32640 (inside the sf_rx_clist region: corrupts RX completion reads too): cur_tx->sf_mbuf = 0xdeadc0de0000
sfrh[tx]: sc->sf_tx_cnt 0 -> -1 (UNDERFLOW)
sfrh[tx]: OOB WRITE blk+32640 <- NULL (sf_mbuf field of phantom descriptor)
sfrh[tx]: verify: blk+32640 now reads 0
sfrh[tx]: mode 2: calling REAL m_freem(0xdeadc0de0000) exactly as if_sf.c:1010 would -> EXPECT PAGE FAULT PANIC
Fatal trap 9: general protection fault while in kernel mode
cpuid = 1; lapic id = 1
instruction pointer = 0x8:0xffffffff806bdcb0
stack pointer = 0x10:0xfffff801182bd6e8
frame pointer = 0x10:0xfffff801182bd6f8
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 1096
current thread = pri 6
kernel: type 9 trap, code=0
CPU1 stopping CPUs: 0x0000003d