Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Aug 2014 08:24:38 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r270205 - in stable/10/sys: kern vm
Message-ID:  <201408200824.s7K8OcSn069089@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201408200824.s7K8OcSn069089>