⬢ DragonFlyBSD Kernel Audit
DF-4696 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4696",
  "title": "Divide-by-zero (#DE panic) in dpp1_dscl_calc_lb_num_partitions for UABI-legal off-CRTC planes (recout.width==0 bypasses the viewport-only >=16 guard)",
  "verdict": "not_reproduced",
  "impact": "dos_on_real_hw_none_on_guest",
  "confidence": "certain",
  "reproduce": {
    "build": "cd findings/poc/DF-4696 && ./build.sh   # cc -O2 -Wall -o trigger_df4696 trigger_df4696.c",
    "run": "cd findings/poc/DF-4696 && ./run.sh",
    "expected": "probe: open(/dev/dri/card0) fails (no AMD GPU under QEMU); control case prints clamped num_part_y=64; attack case prints 'divisor is 0 -> kernel would execute 816 / 0 at dcn10_dpp_dscl.c:439' then dies 'Floating point exception' exit 136 (SIGFPE = userland twin of kernel #DE panic)"
  },
  "kernel_refs": [
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:411",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:416",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:439",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:440",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:441",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:463",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:476",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c:647",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_dpp.c:141",
    "sys/dev/drm/amd/display/dc/core/dc_resource.c:615",
    "sys/dev/drm/amd/display/dc/core/dc_resource.c:639",
    "sys/dev/drm/amd/display/dc/core/dc_resource.c:1125",
    "sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm.c:2210",
    "sys/dev/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c:2029"
  ],
  "artifacts": [
    "trigger_df4696.c", "build.sh", "run.sh", "build.log",
    "build_first_attempt.log", "run.log", "run.2.log", "env.txt",
    "fix.diff", "VERDICT.md", "manifest.json", "verdict.json"
  ]
}