⬢ DragonFlyBSD Kernel Audit
DF-5082 / manifest.json
← back to finding ↓ download raw
{
  "verdict": "reproduced",
  "impact": "panic",
  "finding_id": "DF-5082",
  "summary": "os_map_pci_bar() never checks bus_alloc_resource_any() (hptrr_os_bsd.c:101); on allocation failure rman_get_virtual(NULL) at :104 dereferences NULL -> read at 0x40 -> Fatal trap 12 in the hptrr attach path (boot-time persistent panic when a RocketRAID 2xxx card has an unallocatable BAR). Twin of DF-5039.",
  "reproduce": {
    "build": "scp -F dfbsd-qemu/config df5082_harness.c build.sh dfbsd:/root/ && vm.sh run_root 'sh /root/build.sh'",
    "run": "vm.sh run_root 'kldload /root/df5082/df5082.ko; sysctl df5082.trigger=2; sysctl df5082.trigger=1'",
    "expected": "trigger=2: 'guarded, no panic', guest survives; trigger=1: Fatal trap 12, fault virtual address = 0x40, Stopped at df5082_trigger+0x2de: movq 0x40(%rax),%rsi, guest wedged at db> (ssh RC=124)"
  },
  "kernel_refs": [
    "sys/dev/raid/hptrr/hptrr_os_bsd.c:85",
    "sys/dev/raid/hptrr/hptrr_os_bsd.c:101",
    "sys/dev/raid/hptrr/hptrr_os_bsd.c:104",
    "sys/sys/rman.h:106",
    "sys/sys/rman.h:149",
    "sys/kern/subr_bus.c:2673",
    "sys/bus/pci/pci.c:2525",
    "sys/config/X86_64_GENERIC:120"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "df5082_harness.c", "build.sh", "run.sh",
    "build.log", "run.log", "run.2.log", "panic.txt", "env.txt",
    "fix.diff", "manifest.json", "verdict.json"
  ]
}