Module Name:    src
Committed By:   rmind
Date:           Sat Jan 28 00:00:06 UTC 2012

Modified Files:
        src/sys/kern: subr_pool.c vfs_bio.c
        src/sys/ufs/ffs: ffs_vfsops.c
        src/sys/uvm: uvm_init.c uvm_kmguard.c uvm_map.c uvm_pdpolicy_clock.c
            uvm_swap.c

Log Message:
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const.
ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc.
sys_swapctl: move kmem_free outside the lock path.
uvm_init: fix comment, remove pointless numeration of steps.
uvm_map_enter: remove meflagval variable.
Fix some indentation.


To generate a diff of this commit:
cvs rdiff -u -r1.191 -r1.192 src/sys/kern/subr_pool.c
cvs rdiff -u -r1.234 -r1.235 src/sys/kern/vfs_bio.c
cvs rdiff -u -r1.273 -r1.274 src/sys/ufs/ffs/ffs_vfsops.c
cvs rdiff -u -r1.42 -r1.43 src/sys/uvm/uvm_init.c
cvs rdiff -u -r1.6 -r1.7 src/sys/uvm/uvm_kmguard.c
cvs rdiff -u -r1.311 -r1.312 src/sys/uvm/uvm_map.c
cvs rdiff -u -r1.15 -r1.16 src/sys/uvm/uvm_pdpolicy_clock.c
cvs rdiff -u -r1.159 -r1.160 src/sys/uvm/uvm_swap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/subr_pool.c
diff -u src/sys/kern/subr_pool.c:1.191 src/sys/kern/subr_pool.c:1.192
--- src/sys/kern/subr_pool.c:1.191	Fri Jan 27 19:48:40 2012
+++ src/sys/kern/subr_pool.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_pool.c,v 1.191 2012/01/27 19:48:40 para Exp $	*/
+/*	$NetBSD: subr_pool.c,v 1.192 2012/01/28 00:00:06 rmind Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1999, 2000, 2002, 2007, 2008, 2010
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.191 2012/01/27 19:48:40 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.192 2012/01/28 00:00:06 rmind Exp $");
 
 #include "opt_ddb.h"
 #include "opt_pool.h"
@@ -531,8 +531,8 @@ pr_rmpage(struct pool *pp, struct pool_i
 void
 pool_subsystem_init(void)
 {
-	int idx;
 	size_t size;
+	int idx;
 
 	mutex_init(&pool_head_lock, MUTEX_DEFAULT, IPL_NONE);
 	mutex_init(&pool_allocator_lock, MUTEX_DEFAULT, IPL_NONE);
@@ -2718,7 +2718,9 @@ void	pool_page_free(struct pool *, void 
 
 #ifdef POOL_SUBPAGE
 struct pool_allocator pool_allocator_kmem_fullpage = {
-	pool_page_alloc, pool_page_free, 0
+	.pa_alloc = pool_page_alloc,
+	.pa_free = pool_page_free,
+	.pa_pagesz = 0
 };
 #else
 struct pool_allocator pool_allocator_kmem = {
@@ -2733,7 +2735,9 @@ void	pool_page_free_nointr(struct pool *
 
 #ifdef POOL_SUBPAGE
 struct pool_allocator pool_allocator_nointr_fullpage = {
-	pool_page_alloc_nointr, pool_page_free_nointr, 0,
+	.pa_alloc = pool_page_alloc_nointr,
+	.pa_free = pool_page_free_nointr,
+	.pa_pagesz = 0
 };
 #else
 struct pool_allocator pool_allocator_nointr = {
@@ -2755,7 +2759,9 @@ void	*pool_subpage_alloc_nointr(struct p
 void	pool_subpage_free_nointr(struct pool *, void *);
 
 struct pool_allocator pool_allocator_nointr = {
-	pool_subpage_alloc, pool_subpage_free, POOL_SUBPAGE,
+	.pa_alloc = pool_subpage_alloc,
+	.pa_free = pool_subpage_free,
+	.pa_pagesz = POOL_SUBPAGE
 };
 #endif /* POOL_SUBPAGE */
 
@@ -2791,18 +2797,14 @@ pool_allocator_free(struct pool *pp, voi
 void *
 pool_page_alloc(struct pool *pp, int flags)
 {
-	bool waitok = (flags & PR_WAITOK) ? true : false;
-	int rc;
+	const vm_flag_t vflags = (flags & PR_WAITOK) ? VM_SLEEP: VM_NOSLEEP;
 	vmem_addr_t va;
+	int ret;
 
-	rc = uvm_km_kmem_alloc(kmem_va_arena,
-	    pp->pr_alloc->pa_pagesz,
-	    ((waitok ? VM_SLEEP : VM_NOSLEEP) | VM_INSTANTFIT), &va);
+	ret = uvm_km_kmem_alloc(kmem_va_arena, pp->pr_alloc->pa_pagesz,
+	    vflags | VM_INSTANTFIT, &va);
 
-	if (rc != 0)
-		return NULL;
-	else
-		return (void *)va;
+	return ret ? NULL : (void *)va;
 }
 
 void
@@ -2815,25 +2817,21 @@ pool_page_free(struct pool *pp, void *v)
 static void *
 pool_page_alloc_meta(struct pool *pp, int flags)
 {
-	bool waitok = (flags & PR_WAITOK) ? true : false;
-	int rc;
-	vmem_addr_t addr;
+	const vm_flag_t vflags = (flags & PR_WAITOK) ? VM_SLEEP: VM_NOSLEEP;
+	vmem_addr_t va;
+	int ret;
 
-	rc = vmem_alloc(kmem_meta_arena, pp->pr_alloc->pa_pagesz,
-	    (waitok ? VM_SLEEP : VM_NOSLEEP) | VM_INSTANTFIT, &addr);
+	ret = vmem_alloc(kmem_meta_arena, pp->pr_alloc->pa_pagesz,
+	    vflags | VM_INSTANTFIT, &va);
 
-	if (rc != 0)
-		return 0;
-	else
-		return (void *)addr;
+	return ret ? NULL : (void *)va;
 }
 
 static void
 pool_page_free_meta(struct pool *pp, void *v)
 {
 
-	vmem_free(kmem_meta_arena, (vmem_addr_t)v,
-	    pp->pr_alloc->pa_pagesz);
+	vmem_free(kmem_meta_arena, (vmem_addr_t)v, pp->pr_alloc->pa_pagesz);
 }
 
 #ifdef POOL_SUBPAGE

Index: src/sys/kern/vfs_bio.c
diff -u src/sys/kern/vfs_bio.c:1.234 src/sys/kern/vfs_bio.c:1.235
--- src/sys/kern/vfs_bio.c:1.234	Fri Jan 27 19:48:40 2012
+++ src/sys/kern/vfs_bio.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_bio.c,v 1.234 2012/01/27 19:48:40 para Exp $	*/
+/*	$NetBSD: vfs_bio.c,v 1.235 2012/01/28 00:00:06 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -123,7 +123,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.234 2012/01/27 19:48:40 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.235 2012/01/28 00:00:06 rmind Exp $");
 
 #include "opt_bufcache.h"
 
@@ -231,17 +231,14 @@ static struct vm_map *buf_map;
 static void *
 bufpool_page_alloc(struct pool *pp, int flags)
 {
-	int rc;
+	const vm_flag_t vflags = (flags & PR_WAITOK) ? VM_SLEEP: VM_NOSLEEP;
 	vmem_addr_t va;
+	int ret;
 
-	rc = uvm_km_kmem_alloc(kmem_va_arena, MAXBSIZE,
-	    ((flags & PR_WAITOK) ? VM_SLEEP : VM_NOSLEEP) | VM_INSTANTFIT,
-	    &va);
+	ret = uvm_km_kmem_alloc(kmem_va_arena, MAXBSIZE,
+	    vflags | VM_INSTANTFIT, &va);
 
-	if (rc != 0)
-		return NULL;
-	else
-		return (void *)va;
+	return ret ? NULL : (void *)va;
 }
 
 static void

Index: src/sys/ufs/ffs/ffs_vfsops.c
diff -u src/sys/ufs/ffs/ffs_vfsops.c:1.273 src/sys/ufs/ffs/ffs_vfsops.c:1.274
--- src/sys/ufs/ffs/ffs_vfsops.c:1.273	Fri Jan 27 19:22:49 2012
+++ src/sys/ufs/ffs/ffs_vfsops.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs_vfsops.c,v 1.273 2012/01/27 19:22:49 para Exp $	*/
+/*	$NetBSD: ffs_vfsops.c,v 1.274 2012/01/28 00:00:06 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.273 2012/01/27 19:22:49 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.274 2012/01/28 00:00:06 rmind Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -890,8 +890,7 @@ ffs_mountfs(struct vnode *devvp, struct 
 	if (error)
 		return error;
 
-	ump = kmem_alloc(sizeof(*ump), KM_SLEEP);
-	memset(ump, 0, sizeof *ump);
+	ump = kmem_zalloc(sizeof(*ump), KM_SLEEP);
 	mutex_init(&ump->um_lock, MUTEX_DEFAULT, IPL_NONE);
 	error = ffs_snapshot_init(ump);
 	if (error)

Index: src/sys/uvm/uvm_init.c
diff -u src/sys/uvm/uvm_init.c:1.42 src/sys/uvm/uvm_init.c:1.43
--- src/sys/uvm/uvm_init.c:1.42	Fri Jan 27 19:48:41 2012
+++ src/sys/uvm/uvm_init.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_init.c,v 1.42 2012/01/27 19:48:41 para Exp $	*/
+/*	$NetBSD: uvm_init.c,v 1.43 2012/01/28 00:00:06 rmind Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_init.c,v 1.42 2012/01/27 19:48:41 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_init.c,v 1.43 2012/01/28 00:00:06 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -78,62 +78,59 @@ uvm_init(void)
 	vaddr_t kvm_start, kvm_end;
 
 	/*
-	 * step 0: ensure that the hardware set the page size
+	 * Ensure that the hardware set the page size, zero the UVM structure.
 	 */
 
 	if (uvmexp.pagesize == 0) {
 		panic("uvm_init: page size not set");
 	}
 
-	/*
-	 * step 1: zero the uvm structure
-	 */
-
 	memset(&uvm, 0, sizeof(uvm));
 	averunnable.fscale = FSCALE;
 
 	/*
-	 * step 2: init the page sub-system.  this includes allocating the
-	 * vm_page structures, and setting up all the page queues (and
-	 * locks).  available memory will be put in the "free" queue.
-	 * kvm_start and kvm_end will be set to the area of kernel virtual
-	 * memory which is available for general use.
+	 * Init the page sub-system.  This includes allocating the vm_page
+	 * structures, and setting up all the page queues (and locks).
+	 * Available memory will be put in the "free" queue, kvm_start and
+	 * kvm_end will be set to the area of kernel virtual memory which
+	 * is available for general use.
 	 */
 
 	uvm_page_init(&kvm_start, &kvm_end);
 
 	/*
-	 * step 3: init the map sub-system. 
+	 * Init the map sub-system.
 	 */
 
 	uvm_map_init();
 
 	/*
-	 * step 4: setup the kernel's virtual memory data structures.  this
-	 * includes setting up the kernel_map/kernel_object.
-	 * Bootstrap all kernel memory allocators.
+	 * Setup the kernel's virtual memory data structures.  This includes
+	 * setting up the kernel_map/kernel_object.  Bootstrap all kernel
+	 * memory allocators.
 	 */
 
 	uao_init();
 	uvm_km_bootstrap(kvm_start, kvm_end);
 
-	/* 
-	 * step 5: setup uvm_map pool_caches and init the amap.
+	/*
+	 * Setup uvm_map caches and init the amap.
 	 */
 
 	uvm_map_init_caches();
 	uvm_amap_init();
 
 	/*
-	 * step 5: init the pmap module.   the pmap module is free to allocate
+	 * Init the pmap module.  The pmap module is free to allocate
 	 * memory for its private use (e.g. pvlists).
 	 */
 
 	pmap_init();
 
-	/* step 6: init the kernel maps virtual address caches.
-	 * make kernel memory allocator ready for use.
-         * After this call the pool/kmem memory allocators can be used.
+	/*
+	 * Init the kernel maps virtual address caches.  Make kernel memory
+	 * allocator ready for use.  After this call the pool/kmem memory
+	 * allocators can be used.
 	 */
 
 	uvm_km_init();
@@ -143,7 +140,7 @@ uvm_init(void)
 #endif
 
 	/*
-	 * step 6: init all pagers and the pager_map.
+	 * Init all pagers and the pager_map.
 	 */
 
 	uvm_pager_init();
@@ -155,13 +152,13 @@ uvm_init(void)
 	uvm_loan_init();
 
 	/*
-	 * init emap subsystem.
+	 * Init emap subsystem.
 	 */
 
 	uvm_emap_sysinit();
 
 	/*
-	 * the VM system is now up!  now that kmem is up we can resize the
+	 * The VM system is now up!  Now that kmem is up we can resize the
 	 * <obj,off> => <page> hash table for general use and enable paging
 	 * of kernel objects.
 	 */
@@ -172,7 +169,7 @@ uvm_init(void)
 	uvmpdpol_reinit();
 
 	/*
-	 * init anonymous memory systems
+	 * Init anonymous memory systems.
 	 */
 
 	uvm_anon_init();
@@ -180,7 +177,7 @@ uvm_init(void)
 	uvm_uarea_init();
 
 	/*
-	 * init readahead module
+	 * Init readahead mechanism.
 	 */
 
 	uvm_ra_init();

Index: src/sys/uvm/uvm_kmguard.c
diff -u src/sys/uvm/uvm_kmguard.c:1.6 src/sys/uvm/uvm_kmguard.c:1.7
--- src/sys/uvm/uvm_kmguard.c:1.6	Fri Jan 27 19:48:41 2012
+++ src/sys/uvm/uvm_kmguard.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_kmguard.c,v 1.6 2012/01/27 19:48:41 para Exp $	*/
+/*	$NetBSD: uvm_kmguard.c,v 1.7 2012/01/28 00:00:06 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
  * - Use-after-free
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_kmguard.c,v 1.6 2012/01/27 19:48:41 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_kmguard.c,v 1.7 2012/01/28 00:00:06 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -121,15 +121,14 @@ uvm_kmguard_alloc(struct uvm_kmguard *kg
 	va = vm_map_min(kg->kg_map);
 	if (__predict_false(uvm_map(kg->kg_map, &va, PAGE_SIZE*2, NULL,
 	    UVM_UNKNOWN_OFFSET, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_ALL,
-	    UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, flag))
-	    != 0)) {
+	    UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, flag)) != 0)) {
 		return NULL;
 	}
 
 	/*
 	 * allocate a single page and map in at the start of the two page
 	 * block.
-	 */	
+	 */
 
 	for (;;) {
 		pg = uvm_pagealloc(NULL, va - vm_map_min(kg->kg_map), NULL, 0);

Index: src/sys/uvm/uvm_map.c
diff -u src/sys/uvm/uvm_map.c:1.311 src/sys/uvm/uvm_map.c:1.312
--- src/sys/uvm/uvm_map.c:1.311	Fri Jan 27 19:48:41 2012
+++ src/sys/uvm/uvm_map.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_map.c,v 1.311 2012/01/27 19:48:41 para Exp $	*/
+/*	$NetBSD: uvm_map.c,v 1.312 2012/01/28 00:00:06 rmind Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_map.c,v 1.311 2012/01/27 19:48:41 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_map.c,v 1.312 2012/01/28 00:00:06 rmind Exp $");
 
 #include "opt_ddb.h"
 #include "opt_uvmhist.h"
@@ -919,7 +919,7 @@ uvm_map_init(void)
  */
 void
 uvm_map_init_caches(void)
-{ 
+{
 	/*
 	 * initialize caches.
 	 */
@@ -1266,7 +1266,6 @@ uvm_map_enter(struct vm_map *map, const 
 	const int amapwaitflag = (flags & UVM_FLAG_NOWAIT) ?
 	    AMAP_EXTEND_NOWAIT : 0;
 	const int advice = UVM_ADVICE(flags);
-	const int meflagval = 0;
 
 	vaddr_t start = args->uma_start;
 	vsize_t size = args->uma_size;
@@ -1310,7 +1309,7 @@ uvm_map_enter(struct vm_map *map, const 
 
 	if (prev_entry->end == start &&
 	    prev_entry != &map->header &&
-	    UVM_ET_ISCOMPATIBLE(prev_entry, newetype, uobj, meflagval,
+	    UVM_ET_ISCOMPATIBLE(prev_entry, newetype, uobj, 0,
 	    prot, maxprot, inherit, advice, 0)) {
 
 		if (uobj && prev_entry->offset +
@@ -1367,7 +1366,7 @@ uvm_map_enter(struct vm_map *map, const 
 forwardmerge:
 	if (prev_entry->next->start == (start + size) &&
 	    prev_entry->next != &map->header &&
-	    UVM_ET_ISCOMPATIBLE(prev_entry->next, newetype, uobj, meflagval,
+	    UVM_ET_ISCOMPATIBLE(prev_entry->next, newetype, uobj, 0,
 	    prot, maxprot, inherit, advice, 0)) {
 
 		if (uobj && prev_entry->next->offset != uoffset + size)

Index: src/sys/uvm/uvm_pdpolicy_clock.c
diff -u src/sys/uvm/uvm_pdpolicy_clock.c:1.15 src/sys/uvm/uvm_pdpolicy_clock.c:1.16
--- src/sys/uvm/uvm_pdpolicy_clock.c:1.15	Fri Jan 27 19:48:42 2012
+++ src/sys/uvm/uvm_pdpolicy_clock.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_pdpolicy_clock.c,v 1.15 2012/01/27 19:48:42 para Exp $	*/
+/*	$NetBSD: uvm_pdpolicy_clock.c,v 1.16 2012/01/28 00:00:06 rmind Exp $	*/
 /*	NetBSD: uvm_pdaemon.c,v 1.72 2006/01/05 10:47:33 yamt Exp $	*/
 
 /*
@@ -69,7 +69,7 @@
 #else /* defined(PDSIM) */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.15 2012/01/27 19:48:42 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.16 2012/01/28 00:00:06 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -419,10 +419,9 @@ uvmpdpol_reinit(void)
 bool
 uvmpdpol_needsscan_p(void)
 {
-	vmem_size_t kva_size;
-	vmem_size_t kva_free;
+	vmem_size_t kva_size, kva_free;
 
-	kva_size = vmem_size(kmem_arena, VMEM_FREE|VMEM_ALLOC);
+	kva_size = vmem_size(kmem_arena, VMEM_FREE | VMEM_ALLOC);
 	kva_free = vmem_size(kmem_arena, VMEM_FREE);
 
 	if (kva_free < (kva_size / 10)) {
@@ -432,7 +431,7 @@ uvmpdpol_needsscan_p(void)
 	if (pdpol_state.s_inactive < pdpol_state.s_inactarg) {
 		return true;
 	}
-		if (pdpol_state.s_inactive < pdpol_state.s_inactarg) {
+	if (pdpol_state.s_inactive < pdpol_state.s_inactarg) {
 		return true;
 	}
 	return false;

Index: src/sys/uvm/uvm_swap.c
diff -u src/sys/uvm/uvm_swap.c:1.159 src/sys/uvm/uvm_swap.c:1.160
--- src/sys/uvm/uvm_swap.c:1.159	Fri Jan 27 19:48:42 2012
+++ src/sys/uvm/uvm_swap.c	Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_swap.c,v 1.159 2012/01/27 19:48:42 para Exp $	*/
+/*	$NetBSD: uvm_swap.c,v 1.160 2012/01/28 00:00:06 rmind Exp $	*/
 
 /*
  * Copyright (c) 1995, 1996, 1997, 2009 Matthew R. Green
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.159 2012/01/27 19:48:42 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.160 2012/01/28 00:00:06 rmind Exp $");
 
 #include "opt_uvmhist.h"
 #include "opt_compat_netbsd.h"
@@ -638,9 +638,8 @@ sys_swapctl(struct lwp *l, const struct 
 		 */
 
 		priority = SCARG(uap, misc);
-		sdp = kmem_alloc(sizeof(*sdp), KM_SLEEP);
+		sdp = kmem_zalloc(sizeof(*sdp), KM_SLEEP);
 		spp = kmem_alloc(sizeof(*spp), KM_SLEEP);
-		memset(sdp, 0, sizeof(*sdp));
 		sdp->swd_flags = SWF_FAKE;
 		sdp->swd_vp = vp;
 		sdp->swd_dev = (vp->v_type == VBLK) ? vp->v_rdev : NODEV;
@@ -713,10 +712,9 @@ sys_swapctl(struct lwp *l, const struct 
 	 * done!  release the ref gained by namei() and unlock.
 	 */
 	vput(vp);
-
 out:
-	kmem_free(userpath, SWAP_PATH_MAX);
 	rw_exit(&swap_syscall_lock);
+	kmem_free(userpath, SWAP_PATH_MAX);
 
 	UVMHIST_LOG(pdhist, "<- done!  error=%d", error, 0, 0, 0);
 	return (error);

Reply via email to