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

rcu_expand() performs a blocking GFP_KERNEL (M_WAITOK) allocation inside crit_enter() β€” sleeping allocation in a critical section under memory pressure

Summary

GFP_KERNEL maps to M_WAITOK which can sleep (vm_wait/tsleep) while td_critcount>0 - breaks the crit serialization the ring relies on (latent today: state consistent mid-expand) and would be outright illegal if any irq-context caller queued a callback. GFP_NOWAIT or restructure-outside-crit fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

not_testable
baseline no→ patch + rebuild →patched clean
per-fix-DF-5127

Confirmed kernel references

Detail

Evidence (decisive lines)

source trace: kern_slaballoc.c:1786-1793 M_WAITOK blocking inside crit from :174/:199

Verified recommended fix

GFP_NOWAIT inside crit or restructure rcu_expand outside crit_enter

Verdict

untested (Low/hardening; needs forced page exhaustion during a call_rcu burst)