⬢ DragonFlyBSD Kernel Audit
DF-4794 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4794",
  "title": "ig_hal VF: E1000_VF_SET_MULTICAST_OVERFLOW flag overwritten before send — PF never told to enable multicast promiscuous (>30 groups silently dropped)",
  "file": "sys/dev/netif/ig_hal/e1000_vf.c",
  "lines": [421, 427],
  "severity": "Low",
  "verdict": "untested",
  "impact": "none demonstrated at runtime (no SR-IOV VF hardware on guest); logic-level proven: multicast reception loss on igb VF interfaces when >30 groups joined",
  "reproduce": {
    "build": "cc -Wall -O2 -o mcmsg_demo mcmsg_demo.c   (build.sh; deterministic logic demo)",
    "run": "./mcmsg_demo   (run.sh)",
    "expected": "CURRENT ordering: mc_addr_count=31 -> PF-visible msgbuf[0]=0x001e0003 (OVERFLOW flag not set); FIXED ordering: 0x009e0003 (flag SET)"
  },
  "kernel_refs": [
    "sys/dev/netif/ig_hal/e1000_vf.c:421",
    "sys/dev/netif/ig_hal/e1000_vf.c:422",
    "sys/dev/netif/ig_hal/e1000_vf.c:426",
    "sys/dev/netif/ig_hal/e1000_vf.c:436",
    "sys/dev/netif/ig_hal/e1000_mbx.h:82",
    "sys/dev/netif/igb/if_igb.c:108",
    "sys/dev/netif/igb/if_igb.c:1304",
    "sys/dev/netif/ig_hal/e1000_api.c:510"
  ],
  "upstream_ref": "FreeBSD current sys/dev/e1000/e1000_vf.c assigns msgbuf[0] = E1000_VF_SET_MULTICAST before OR-ing E1000_VF_SET_MULTICAST_OVERFLOW (flag preserved)",
  "artifacts": [
    "README.md", "VERDICT.md", "mcmsg_demo.c", "build.sh", "run.sh",
    "build.log", "run.log", "env.txt", "fix.diff", "manifest.json", "verdict.json"
  ]
}