⬢ DragonFlyBSD Kernel Audit
DF-5054 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5054",
  "verdict": "reproduced",
  "impact": "panic",
  "confidence": "certain",
  "root_cause": "irq_source_info_dce80[DAL_IRQ_SOURCES_NUMBER=90] has designators covering exactly 0..83 (last: vblank_int_entry(5)==DC_IRQ_SOURCE_VBLANK6, irq_service_dce80.c:273); DC_IRQ_SOURCE_DC{1..6}_VLINE0 (enum 84..89, irq_types.h:140-147) stay zero-initialized with .funcs==NULL, and dal_irq_service_ack (:152, called first by dal_irq_service_set at :116) / dal_irq_service_set (:118) dereference info->funcs without a NULL check — DF-2168/DF-4932 (dce110) / DF-4995 (dcn10) family instance on the DCE80 (Sea Islands) table",
  "kernel_refs": [
    "sys/dev/drm/amd/display/dc/irq/dce80/irq_service_dce80.c:188",
    "sys/dev/drm/amd/display/dc/irq/dce80/irq_service_dce80.c:273",
    "sys/dev/drm/amd/display/dc/irq/dce80/irq_service_dce80.c:277",
    "sys/dev/drm/amd/display/dc/irq/irq_service.c:82",
    "sys/dev/drm/amd/display/dc/irq/irq_service.c:116",
    "sys/dev/drm/amd/display/dc/irq/irq_service.c:118",
    "sys/dev/drm/amd/display/dc/irq/irq_service.c:152",
    "sys/dev/drm/amd/display/dc/irq_types.h:140",
    "sys/dev/drm/amd/display/dc/core/dc.c:1687",
    "sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c:353",
    "sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm.c:3014"
  ],
  "reproduce": {
    "build": "sh build.sh   # cc -O2 -Wall -std=gnu11 [-DFIX_DF5054] on the audit guest",
    "run": "sh run.sh      # baseline then fixed",
    "expected": "baseline: 6 NULL-funcs entries table[84..89], controls pass (OOB index 90 rejected; PFLIP1 generic set programs 0x2200->1; HPD1 dce80 hpd_ack polarity 0xffffffff->0xfffffffb; 256x13 to_dal sweep: 0 VLINE0 returns -> latent), then dal_irq_service_set(DC_IRQ_SOURCE_DC1_VLINE0) SIGSEGVs, EXIT=139 (deterministic x2, run.log + run.2.log). fixed: 0 NULL-funcs, dummy handlers log-and-return, EXIT=0; plus full -Werror amdgpu.ko rebuild with fix.diff RC=0 (amdgpu_module_build.log)."
  },
  "artifacts": [
    "README.md", "VERDICT.md", "dce80_vline0gap.c", "build.sh", "run.sh",
    "build.log", "run.log", "run.2.log", "env.txt",
    "fix.diff", "amd_fix_apply.log", "amdgpu_module_build.log",
    "manifest.json", "verdict.json"
  ]
}