โฌข DragonFlyBSD Kernel Audit
DF-4940 / run.log
โ† back to finding โ†“ download raw
DF-4940 run.log โ€” full transcript of the decisive runs (guest ssh, root)
=========================================================================
[stack: lpbbfake.ko + iicbb + iicbus + if_ic loaded; ic0 configured UP]

=== B.step1: bring ic0 down (normal) ===
# ifconfig ic0 down
# ifconfig ic0 | head -1
ic0: flags=808810<POINTOPOINT,SIMPLEX,MULTICAST,PROXY> metric 0 mtu 1500
   (no UP, no RUNNING)

=== B.step2: TX while interface is DOWN ===
# ping -c 1 -t 3 10.99.99.2
--- 10.99.99.2 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss

=== B.step3: flags after TX while DOWN ===
# ifconfig ic0 | head -1
ic0: flags=808850<POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,PROXY> metric 0 mtu 1500
   *** BUG: RUNNING SET while interface is DOWN (if_ic.c:347) ***

# netstat -I ic0
Name      Mtu   Network       Address            Ipkts Ierrs    Opkts Oerrs  Coll
ic0     1500  10.99.99.0/30 10.99.99.1             0     -        1     -      -
   (Opkts=1: the packet was transmitted through icoutput over the un-owned iicbus)

=== B.step5: bring UP -- allocation must be skipped because RUNNING was forced ===
# ifconfig ic0 up
# ifconfig ic0 | head -1
ic0: flags=808851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,PROXY> metric 0 mtu 1500
before-up:   devbuf     819   1.09M       0    390M      832
after-up:    devbuf     819   1.09M       0    390M      832
   *** BUG: up branch skipped โ€” NO buffer allocation, NO iicbus_request_bus ***

=== B.step6: control โ€” normal down/up cycle DOES allocate ===
ctl-before-up:  devbuf     819   1.09M       0    390M      832
ctl-after-up:   devbuf     821   1.09M       0    390M      834
   (+2 = ic_obuf + ic_ifbuf; proves the skipped allocation in step5 is the bug)

=========================================================================
FIX VALIDATION (fix.diff; if_ic.ko rebuilt on guest /usr/src copy, rebooted)
=========================================================================
=== fixB.step1: down ===
ic0: flags=808810<POINTOPOINT,SIMPLEX,MULTICAST,PROXY> metric 0 mtu 1500
=== fixB.step2: TX while down ===
ping: sendto: Network is down
1 packets transmitted, 0 packets received, 100.0% packet loss
=== fixB.step3: flags after TX-while-down (RUNNING must be ABSENT) ===
ic0: flags=808810<POINTOPOINT,SIMPLEX,MULTICAST,PROXY> metric 0 mtu 1500
   (NO phantom RUNNING โ€” bad behavior GONE; driver returns ENETDOWN)
=== fixB.step4: up works properly ===
before-up: devbuf 219 214K  / after-up: devbuf 219 214K   (buffers REUSED per DF-4939 fix, no leak)
ic0: flags=808851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,PROXY> metric 0 mtu 1500
   (proper UP+RUNNING transition restored)
netstat -I ic0: Oerrs 1 (the rejected down-TX), Opkts 1 (from the valid earlier session)