svn commit: r300595 - head/sys/vm

Konstantin Belousov kib at FreeBSD.org
Tue May 24 10:16:04 UTC 2016


Author: kib
Date: Tue May 24 10:16:03 2016
New Revision: 300595
URL: https://svnweb.freebsd.org/changeset/base/300595

Log:
  Remove Giant around allocation of the swap pager with non-NULL handle.
  Existing issue of not protecting pager_object_list iteration in
  vm_pager_object_lookup() by sw_alloc_mtx is not affected by Giant
  removal.
  
  Reviewed by:	alc
  Sponsored by:	The FreeBSD Foundation

Modified:
  head/sys/vm/swap_pager.c

Modified: head/sys/vm/swap_pager.c
==============================================================================
--- head/sys/vm/swap_pager.c	Tue May 24 09:23:04 2016	(r300594)
+++ head/sys/vm/swap_pager.c	Tue May 24 10:16:03 2016	(r300595)
@@ -604,7 +604,6 @@ swap_pager_alloc(void *handle, vm_ooffse
 
 	pindex = OFF_TO_IDX(offset + PAGE_MASK + size);
 	if (handle) {
-		mtx_lock(&Giant);
 		/*
 		 * Reference existing named region or allocate new one.  There
 		 * should not be a race here against swp_pager_meta_build()
@@ -617,7 +616,6 @@ swap_pager_alloc(void *handle, vm_ooffse
 			if (cred != NULL) {
 				if (!swap_reserve_by_cred(size, cred)) {
 					sx_xunlock(&sw_alloc_sx);
-					mtx_unlock(&Giant);
 					return (NULL);
 				}
 				crhold(cred);
@@ -633,7 +631,6 @@ swap_pager_alloc(void *handle, vm_ooffse
 			VM_OBJECT_WUNLOCK(object);
 		}
 		sx_xunlock(&sw_alloc_sx);
-		mtx_unlock(&Giant);
 	} else {
 		if (cred != NULL) {
 			if (!swap_reserve_by_cred(size, cred))


More information about the svn-src-head mailing list