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

pmap_remove_pages skips cross-CPU TLB invalidation (cpu_invltlb only, no smp_invltlb)

Summary

pmap_remove_pages at pmap.c:5728-5732: pmap_remove_noinval (smp_inval=0, no per-page IPI) then cpu_invltlb() local CPU only. Used during process exit for speed. Other CPUs with stale TLB entries for dying process retain them until next CR3 load. DFly x86-64 no PCID in this path (load_cr3 at :6456) so non-global entries flushed on context switch. Residual risk: interrupt-time speculative access on idle CPU with stale CR3 to page being reclaimed by page daemon -> transient info leak of <=1 cache-line. Defense-in-depth. Fix: smp_invltlb() or use pmap_remove (with SMP inval).

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-0980 Β· 1 files
FileTypeDescriptionSize
manifest.json file 397 B view raw

Fix verification

not_testable
baseline reproduced→ patch + rebuild →patched clean

recommended fix identified; fix.diff not authored/validated in this batch

recommended fix identified; fix.diff not authored/validated in this batch
combined build rc=0

Confirmed kernel references

β€”

Detail

Exploit chain

none (Info severity)

Evidence (decisive lines)

Source-confirmed at sys/platform/pc64/x86_64/pmap.c:5727: pmap_remove_pages skips cross-CPU TLB invalidation

Verified recommended fix

Source-confirmed at sys/platform/pc64/x86_64/pmap.c:5727: pmap_remove_pages skips cross-CPU TLB invalidation

Verdict

Source-confirmed at sys/platform/pc64/x86_64/pmap.c:5727: pmap_remove_pages skips cross-CPU TLB invalidation