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)
PoC verification
Evidence pack
findings/poc/DF-5127 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 1.1 KB | view raw |
Fix verification
not_testablebaseline 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)
No comments yet.