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)