]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Revert r240317 to prevent leaking pmap entries
authorConrad Meyer <cem@FreeBSD.org>
Thu, 16 Jul 2020 23:29:26 +0000 (23:29 +0000)
committerConrad Meyer <cem@FreeBSD.org>
Thu, 16 Jul 2020 23:29:26 +0000 (23:29 +0000)
commit4ae224c6633de9ab5ab29da11a2cbb42b71ae852
tree1304702bf837290c0ecfa9e317cda2313b26b2a4
parentbbbefa33c9088f2f411479d5b15c671abe0ea38c
Revert r240317 to prevent leaking pmap entries

Subsequent to r240317, kmem_free() was replaced with kva_free() (r254025).
kva_free() releases the KVA allocation for the mapped region, but no longer
clears the pmap (pagetable) entries.

An affected pmap_unmapdev operation would leave the still-pmap'd VA space
free for allocation by other KVA consumers.  However, this bug easily
avoided notice for ~7 years because most devices (1) never call
pmap_unmapdev and (2) on amd64, mostly fit within the DMAP and do not need
KVA allocations.  Other affected arch are less popular: i386, MIPS, and
PowerPC.  Arm64, arm32, and riscv are not affected.

Reported by: Don Morris <dgmorris AT earthlink.net>
Submitted by: Don Morris (amd64 part)
Reviewed by: kib, markj, Don (!amd64 parts)
MFC after: I don't intend to, but you might want to
Sponsored by: Dell Isilon
Differential Revision: https://reviews.freebsd.org/D25689
sys/amd64/amd64/pmap.c
sys/i386/i386/pmap.c
sys/mips/mips/pmap.c
sys/powerpc/aim/mmu_oea.c
sys/powerpc/aim/mmu_oea64.c
sys/powerpc/aim/mmu_radix.c
sys/powerpc/booke/pmap.c