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

vega10_smu_init error path kfrees hwmgr->smu_backend without NULLing it, defeating vega10_smu_fini's NULL guard β€” latent double-free/UAF (the vega12 DF-4951 shape)

Summary

free_backend kfrees without the NULL assignment the success-time fini has - fini's 'if (priv)' guard passes a dangling pointer, so any fini-after-failed-init double-frees. status.sw-gated on this tree (leak only); goes live on any error-unwind change. One-line NULL fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

not_testable
per-fix-DF-4994

Confirmed kernel references

Detail

Exploit chain

vega10 smu_init failure -> dangling backend -> later sw_fini -> double free / bo ops on freed memory

Evidence (decisive lines)

findings/poc/DF-4994/ (this verdict)

Verdict

Latent double-free/UAF (Low, hw-gated + status.sw-gated on this tree): vega10_smu_init's free_backend label kfrees hwmgr->smu_backend WITHOUT NULLing it - vega10_smu_fini's only defense is 'if (priv)' and a dangling non-NULL passes it, so any fini-after-failed-init re-kfrees the backend and runs amdgpu_bo_free_kernel on freed memory (the vega12 DF-4951 shape; the success-time fini has exactly the missing NULL at :316). On this tree the IP status.sw gating blocks it (a leak only); it goes live the moment any path calls sw_fini after a failed sw_init. One-line NULL fix.