⬢ DragonFlyBSD Kernel Audit
DF-5089 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5089",
  "verdict": "untested",
  "impact": "none",
  "confidence": "certain",
  "summary": "si_copy_dma discards the return values of radeon_sync_resv()/radeon_sync_rings() (si_dma.c:255-256); on sync failure (e.g. -EINVAL syncing to a ring disabled by a failed ib test) the DMA copy is emitted without cross-ring ordering, silently corrupting the migrated bo's GPU contents — SI twin of DF-4871",
  "kernel_refs": [
    "sys/dev/drm/radeon/si_dma.c:255",
    "sys/dev/drm/radeon/si_dma.c:256",
    "sys/dev/drm/radeon/radeon_sync.c:153",
    "sys/dev/drm/radeon/radeon_ib.c:149"
  ],
  "artifacts": ["README.md", "VERDICT.md", "fix.diff", "env.txt", "run.log", "manifest.json", "verdict.json"],
  "reproduce": {
    "build": "n/a — kernel-internal GEM bo-migration path",
    "run": "on real SI hardware: unprivileged GEM client forcing bo migrations (eviction) while the DMA ring source of a pending resv fence was disabled by a prior failed ib test / GPU reset; verify copied bo contents against pre-move canonical contents",
    "expected": "without fix: copy committed despite radeon_sync_rings() returning -EINVAL, destination bo holds stale/partial data with a good fence; with fix.diff: copy path returns the error, ttm falls back to memcpy"
  }
}