]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
Fix a leak of the wired pages when unwiring of the PROT_NONE-mapped
authorkib <kib@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 1 Sep 2014 07:58:15 +0000 (07:58 +0000)
committerkib <kib@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 1 Sep 2014 07:58:15 +0000 (07:58 +0000)
commit0c6475874006fa062d14e843a6da51f49535af20
tree8a38ed27916582f1759cfcc70e76cd5fabbebce1
parent6e640622eb40a9f540484a25dc4130117348cf38
Fix a leak of the wired pages when unwiring of the PROT_NONE-mapped
wired region.  Rework the handling of unwire to do the it in batch,
both at pmap and object level.

All commits below are by alc.

MFC r268327:
Introduce pmap_unwire().

MFC r268591:
Implement pmap_unwire() for powerpc.

MFC r268776:
Implement pmap_unwire() for arm.

MFC r268806:
pmap_unwire(9) man page.

MFC r269134:
When unwiring a region of an address space, do not assume that the
underlying physical pages are mapped by the pmap.  This fixes a leak
of the wired pages on the unwiring of the region mapped with no access
allowed.

MFC r269339:
In the implementation of the new function pmap_unwire(), the call to
MOEA64_PVO_TO_PTE() must be performed before any changes are made to the
PVO. Otherwise, MOEA64_PVO_TO_PTE() will panic.

MFC r269365:
Correct a long-standing problem in moea{,64}_pvo_enter() that was revealed
by the combination of r268591 and r269134: When we attempt to add the
wired attribute to an existing mapping, moea{,64}_pvo_enter() do nothing.
(They only set the wired attribute on newly created mappings.)

MFC r269433:
Handle wiring failures in vm_map_wire() with the new functions
pmap_unwire() and vm_object_unwire().
Retire vm_fault_{un,}wire(), since they are no longer used.

MFC r269438:
Rewrite a loop in vm_map_wire() so that gcc doesn't think that the variable
"rv" is uninitialized.

MFC r269485:
Retire pmap_change_wiring().

Reviewed by: alc

git-svn-id: svn://svn.freebsd.org/base/stable/10@270920 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
23 files changed:
ObsoleteFiles.inc
share/man/man9/Makefile
share/man/man9/pmap.9
share/man/man9/pmap_unwire.9 [new file with mode: 0644]
sys/amd64/amd64/pmap.c
sys/arm/arm/pmap-v6.c
sys/arm/arm/pmap.c
sys/i386/i386/pmap.c
sys/i386/xen/pmap.c
sys/ia64/ia64/pmap.c
sys/mips/mips/pmap.c
sys/powerpc/aim/mmu_oea.c
sys/powerpc/aim/mmu_oea64.c
sys/powerpc/booke/pmap.c
sys/powerpc/powerpc/mmu_if.m
sys/powerpc/powerpc/pmap_dispatch.c
sys/sparc64/sparc64/pmap.c
sys/vm/pmap.h
sys/vm/vm_extern.h
sys/vm/vm_fault.c
sys/vm/vm_map.c
sys/vm/vm_object.c
sys/vm/vm_object.h