git: kernel - Fix mlock() related panic and memory leak
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Jul 12 21:12:44 PDT 2015
commit a51ba7a69d2c5084f2823fd37db008825d3f2d25
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun Jul 12 21:07:55 2015 -0700
kernel - Fix mlock() related panic and memory leak
* If a process exits with mlock()d pages, the pages are left wired,
causing an immediate memory leak and also leading to an assertion
and panic later on when the kernel tries to free the pages.
* The problem is due to an exit optimization which calls
pmap_remove_pages() before deleting the mappings. vm_fault_unwire()
expects the pmap to have the pages and fails to properly adjust the
wire count when it doesn't.
* Fixed by testing pmap->pm_stats.wired_count and shifting the
pmap_remove_pages() call to after the maps are removed if it is
non-zero.
Reported-by: marino via muscles panic
Summary of changes:
sys/vm/vm_map.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a51ba7a69d2c5084f2823fd37db008825d3f2d25
--
DragonFly BSD source repository
More information about the Commits
mailing list