⬢ DragonFlyBSD Kernel Audit
DF-4951 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4951",
  "title": "vega12_processpptables: vega12_pp_tables_uninitialize dereferences hwmgr->pptable without a NULL guard; hwmgr_hw_init's err1/err2 paths already ran pptable_fini (hwmgr->pptable=NULL) while pm_en/dpm_enabled stay set, so the next hwmgr_hw_fini (second pp_table sysfs write via amd_powerplay_reset, driver teardown, GPU reset) faults at NULL+16 -> kernel panic",
  "verdict": "reproduced",
  "impact": "panic",
  "reproduce": {
    "build": "cc -O2 -Wall -o vega12_dfini_null vega12_dfini_null.c  (guest cc 8.3)",
    "run": "./vega12_dfini_null",
    "expected": "CASE 1 BOOT-OK clean; CASE 2 BUG (write1 backend-fail + write2): SIGSEGV fault address 0x10 = kfree(NULL->power_saving_clock_max) at vega12_processpptables.c:301 -- kernel panic equivalent; CASE 3 CONTROL (write1 bad-header err:-path + write2) survives and shows the kzalloc leak; PATCHED (-DPATCHED): case 2/4 survive"
  },
  "kernel_refs": [
    "sys/dev/drm/amd/powerplay/hwmgr/vega12_processpptables.c:296",
    "sys/dev/drm/amd/powerplay/hwmgr/vega12_processpptables.c:301",
    "sys/dev/drm/amd/powerplay/hwmgr/vega12_processpptables.c:316",
    "sys/dev/drm/amd/powerplay/hwmgr/hwmgr.c:222",
    "sys/dev/drm/amd/powerplay/hwmgr/hwmgr.c:229",
    "sys/dev/drm/amd/powerplay/hwmgr/hwmgr.c:257",
    "sys/dev/drm/amd/powerplay/hwmgr/hwmgr.c:261",
    "sys/dev/drm/amd/powerplay/hwmgr/hwmgr.c:267",
    "sys/dev/drm/amd/powerplay/hwmgr/hwmgr.c:280",
    "sys/dev/drm/amd/powerplay/amd_powerplay.c:660",
    "sys/dev/drm/amd/powerplay/amd_powerplay.c:676",
    "sys/dev/drm/amd/powerplay/amd_powerplay.c:697",
    "sys/dev/drm/amd/amdgpu/amdgpu_pm.c:463",
    "sys/dev/drm/amd/powerplay/inc/hwmgr.h:579"
  ],
  "artifacts": [
    "vega12_dfini_null.c", "build.sh", "run.sh", "run.log",
    "run.stability.log", "fix_run.log", "fix.diff", "fix_build.log",
    "env.txt", "README.md", "VERDICT.md", "manifest.json", "verdict.json"
  ]
}