svn commit: r270205 - in stable/10/sys: kern vm
Konstantin Belousov
kib at FreeBSD.org
Wed Aug 20 08:24:39 UTC 2014
Author: kib
Date: Wed Aug 20 08:24:37 2014
New Revision: 270205
URL: http://svnweb.freebsd.org/changeset/base/270205
Log:
MFC r269907:
Fix leaks of unqueued unwired pages.
Modified:
stable/10/sys/kern/kern_exec.c
stable/10/sys/kern/uipc_shm.c
stable/10/sys/vm/vm_glue.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/kern/kern_exec.c
==============================================================================
--- stable/10/sys/kern/kern_exec.c Wed Aug 20 08:15:23 2014 (r270204)
+++ stable/10/sys/kern/kern_exec.c Wed Aug 20 08:24:37 2014 (r270205)
@@ -996,6 +996,7 @@ exec_map_first_page(imgp)
vm_page_xunbusy(ma[0]);
vm_page_lock(ma[0]);
vm_page_hold(ma[0]);
+ vm_page_activate(ma[0]);
vm_page_unlock(ma[0]);
VM_OBJECT_WUNLOCK(object);
Modified: stable/10/sys/kern/uipc_shm.c
==============================================================================
--- stable/10/sys/kern/uipc_shm.c Wed Aug 20 08:15:23 2014 (r270204)
+++ stable/10/sys/kern/uipc_shm.c Wed Aug 20 08:24:37 2014 (r270205)
@@ -197,6 +197,12 @@ uiomove_object_page(vm_object_t obj, siz
vm_page_xunbusy(m);
vm_page_lock(m);
vm_page_hold(m);
+ if (m->queue == PQ_NONE) {
+ vm_page_deactivate(m);
+ } else {
+ /* Requeue to maintain LRU ordering. */
+ vm_page_requeue(m);
+ }
vm_page_unlock(m);
VM_OBJECT_WUNLOCK(obj);
error = uiomove_fromphys(&m, offset, tlen, uio);
@@ -208,12 +214,6 @@ uiomove_object_page(vm_object_t obj, siz
}
vm_page_lock(m);
vm_page_unhold(m);
- if (m->queue == PQ_NONE) {
- vm_page_deactivate(m);
- } else {
- /* Requeue to maintain LRU ordering. */
- vm_page_requeue(m);
- }
vm_page_unlock(m);
return (error);
Modified: stable/10/sys/vm/vm_glue.c
==============================================================================
--- stable/10/sys/vm/vm_glue.c Wed Aug 20 08:15:23 2014 (r270204)
+++ stable/10/sys/vm/vm_glue.c Wed Aug 20 08:24:37 2014 (r270205)
@@ -251,6 +251,7 @@ vm_imgact_hold_page(vm_object_t object,
vm_page_xunbusy(m);
vm_page_lock(m);
vm_page_hold(m);
+ vm_page_activate(m);
vm_page_unlock(m);
out:
VM_OBJECT_WUNLOCK(object);
More information about the svn-src-stable
mailing list