Module Name:    src
Committed By:   maxv
Date:           Sun Jun 22 19:09:39 UTC 2014

Modified Files:
        src/sys/compat/netbsd32: netbsd32_netbsd.c
        src/sys/uvm: uvm_swap.c

Log Message:
Sync swapctl() with netbsd32. Return EINVAL when misc<0, and 0 when misc=0
or uvmexp.nswapdev=0.


To generate a diff of this commit:
cvs rdiff -u -r1.189 -r1.190 src/sys/compat/netbsd32/netbsd32_netbsd.c
cvs rdiff -u -r1.168 -r1.169 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/compat/netbsd32/netbsd32_netbsd.c
diff -u src/sys/compat/netbsd32/netbsd32_netbsd.c:1.189 src/sys/compat/netbsd32/netbsd32_netbsd.c:1.190
--- src/sys/compat/netbsd32/netbsd32_netbsd.c:1.189	Fri Jun 13 10:37:02 2014
+++ src/sys/compat/netbsd32/netbsd32_netbsd.c	Sun Jun 22 19:09:39 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_netbsd.c,v 1.189 2014/06/13 10:37:02 joerg Exp $	*/
+/*	$NetBSD: netbsd32_netbsd.c,v 1.190 2014/06/22 19:09:39 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_netbsd.c,v 1.189 2014/06/13 10:37:02 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_netbsd.c,v 1.190 2014/06/22 19:09:39 maxv Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ddb.h"
@@ -1765,10 +1765,8 @@ netbsd32_swapctl_stats(struct lwp *l, st
 
 	if (count < 0)
 		return EINVAL;
-
 	if (count == 0 || uvmexp.nswapdev == 0)
 		return 0;
-
 	/* Make sure userland cannot exhaust kernel memory */
 	if ((size_t)count > (size_t)uvmexp.nswapdev)
 		count = uvmexp.nswapdev;

Index: src/sys/uvm/uvm_swap.c
diff -u src/sys/uvm/uvm_swap.c:1.168 src/sys/uvm/uvm_swap.c:1.169
--- src/sys/uvm/uvm_swap.c:1.168	Sun Mar 16 05:20:30 2014
+++ src/sys/uvm/uvm_swap.c	Sun Jun 22 19:09:39 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_swap.c,v 1.168 2014/03/16 05:20:30 dholland Exp $	*/
+/*	$NetBSD: uvm_swap.c,v 1.169 2014/06/22 19:09:39 maxv 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.168 2014/03/16 05:20:30 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.169 2014/06/22 19:09:39 maxv Exp $");
 
 #include "opt_uvmhist.h"
 #include "opt_compat_netbsd.h"
@@ -492,13 +492,17 @@ sys_swapctl(struct lwp *l, const struct 
 	    || SCARG(uap, cmd) == SWAP_STATS13
 #endif
 	    ) {
-		if ((size_t)misc > (size_t)uvmexp.nswapdev)
-			misc = uvmexp.nswapdev;
-
-		if (misc == 0) {
+		if (misc < 0) {
 			error = EINVAL;
 			goto out;
 		}
+		if (misc == 0 || uvmexp.nswapdev == 0) {
+			error = 0;
+			goto out;
+		}
+		/* Make sure userland cannot exhaust kernel memory */
+		if ((size_t)misc > (size_t)uvmexp.nswapdev)
+			misc = uvmexp.nswapdev;
 		KASSERT(misc > 0);
 #if defined(COMPAT_13)
 		if (SCARG(uap, cmd) == SWAP_STATS13)

Reply via email to