⬢ DragonFlyBSD Kernel Audit
DF-4995 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4995",
  "verdict": "reproduced",
  "impact": "panic",
  "confidence": "certain",
  "root_cause": "irq_source_info_dcn10[DAL_IRQ_SOURCES_NUMBER=90] has no designators past index 83 (vblank_int_entry(5)==DC_IRQ_SOURCE_VBLANK6, irq_service_dcn10.c:325-331); 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-4713/DF-4932 family tail on the DCN10 table",
  "kernel_refs": [
    "sys/dev/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c:245",
    "sys/dev/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c:331",
    "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/irq_types.h:158",
    "sys/dev/drm/amd/display/dc/core/dc.c:1682",
    "sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c:477"
  ],
  "reproduce": {
    "build": "sh build.sh   # cc -O2 -Wall -std=gnu11 [-DFIX_DF4995] 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->0x5; HPD1 hpd_ack polarity 0xffffffff->0xfffffffb; to_dal walk 168 covered / 0 VLINE0), then dal_irq_service_set(DC_IRQ_SOURCE_DC1_VLINE0) SIGSEGVs, EXIT=139 (deterministic, run.log + run.2.log). fixed: 0 NULL-funcs, dummy handlers log-and-return, EXIT=0."
  },
  "artifacts": [
    "README.md", "VERDICT.md", "dcn10_vline0gap.c", "build.sh", "run.sh",
    "build.log", "run.log", "run.2.log", "panic.txt", "env.txt",
    "fix.diff", "amd_fix_apply.log", "amdgpu_module_build.log",
    "fix_build.log", "fix_run.log", "manifest.json", "verdict.json"
  ]
}