⬢ DragonFlyBSD Kernel Audit
DF-4693 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4693",
  "title": "sili_pm: pm_read/pm_write recycle the ata_xfer on a deferred timeout (sili_ata_cmd returns ATA_S_ONCHIP) - CCB freed and re-issuable while the chip owns the slot",
  "verdict": "inconclusive",
  "impact": "none (expected: sili_poll KKASSERT panic on slot reuse, cross-command CCB completion/dmamap corruption via sili_port_reinit, or permanent sili_exclusive_access wedge; guest has no sili HBA / PM emulation)",
  "confidence": "likely",
  "reproduce": {
    "build": "sh build.sh   (cc -O2 -Wall -o trigger_sili_pm trigger_sili_pm.c)",
    "run": "sh run.sh      (reset/rescan storm + dd saturation, 15s)",
    "expected": "on PM hardware with a hung target + other-target NCQ in flight: 'Deferred timeout until its safe' then panic at sili.c:1321 KKASSERT (slot reuse) or stale completion of the recycled ccb; on this guest: loop completes benignly"
  },
  "kernel_refs": [
    "sys/dev/disk/sili/sili_pm.c:657-668",
    "sys/dev/disk/sili/sili_pm.c:698-703",
    "sys/dev/disk/sili/sili_pm.c:563-568",
    "sys/dev/disk/sili/sili.c:2350-2382",
    "sys/dev/disk/sili/sili.c:1311-1360",
    "sys/dev/disk/sili/sili.c:2488-2519",
    "sys/dev/disk/sili/sili.c:403-411",
    "sys/dev/disk/sili/sili.c:1437-1443",
    "sys/dev/disk/sili/sili.c:529-534"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "trigger_sili_pm.c", "build.sh", "run.sh",
    "build.log", "run.log", "env.txt", "fix.diff", "manifest.json", "verdict.json"
  ]
}