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)