β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-4770

intel_dp_mst_atomic_check dereferences drm_atomic_get_new_crtc_state() result without NULL check (latent NULL-deref panic, currently masked by earlier drm-core NULL sinks)

Summary

Connector-only atomic transactions (same-value CRTC_ID on an enabled MST connector) make get_new_crtc_state return NULL; the driver derefs to_intel_crtc_state(NULL)->dp_m_n.tu. Today the drm core NULL-crashes first on every reachable shape (drm_atomic_uapi.c:307-316 / drm_atomic_helper.c:223-227 - cross-file leads logged), masking it; becomes a live unpriv-master panic once the core bugs are fixed. NULL-guard fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-4770 Β· 1 files
FileTypeDescriptionSize
verdict.json file 1.2 KB view raw

Fix verification

not_testable
per-fix-DF-4770

Confirmed kernel references

Detail

Exploit chain

DRM master atomic commit {CONNECTOR:mst, CRTC_ID:current} on enabled MST connector -> connector-only state with zero CRTC states -> get_new_crtc_state NULL -> to_intel_crtc_state(NULL)->dp_m_n.tu read at NULL+offset

Evidence (decisive lines)

findings/poc/DF-4770/ (this verdict; source trace in batch record)

Verdict

Latent NULL-deref, hardware-gated: intel_dp_mst_atomic_check derefs drm_atomic_get_new_crtc_state() result for connector-only transactions (same-value CRTC_ID set on an enabled MST connector returns NULL). Today every reachable transaction shape NULL-crashes earlier in the drm core (drm_atomic_uapi.c:307-316 / drm_atomic_helper.c:223-227 - cross-file lead logged for those sinks), masking this driver-side deref; it becomes a live unpriv-master panic the moment the core bugs are fixed. No i915+MST hardware on the QEMU guest. NULL-guard fix authored.