Module Name: src Committed By: maxv Date: Tue Jun 24 14:33:57 UTC 2014
Modified Files: src/sys/compat/netbsd32: netbsd32_compat_50.c netbsd32_event.c Log Message: Allocate directly KQ_NEVENTS bytes. Otherwise a user can panic the system. ok christos@ To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/compat/netbsd32/netbsd32_compat_50.c cvs rdiff -u -r1.10 -r1.11 src/sys/compat/netbsd32/netbsd32_event.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_compat_50.c diff -u src/sys/compat/netbsd32/netbsd32_compat_50.c:1.23 src/sys/compat/netbsd32/netbsd32_compat_50.c:1.24 --- src/sys/compat/netbsd32/netbsd32_compat_50.c:1.23 Fri Mar 29 01:04:30 2013 +++ src/sys/compat/netbsd32/netbsd32_compat_50.c Tue Jun 24 14:33:57 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_compat_50.c,v 1.23 2013/03/29 01:04:30 christos Exp $ */ +/* $NetBSD: netbsd32_compat_50.c,v 1.24 2014/06/24 14:33:57 maxv Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -36,7 +36,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.23 2013/03/29 01:04:30 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.24 2014/06/24 14:33:57 maxv Exp $"); #if defined(_KERNEL_OPT) #include "opt_sysv.h" @@ -633,7 +633,8 @@ compat_50_netbsd32_kevent(struct lwp *l, nchanges = SCARG(uap, nchanges); nevents = SCARG(uap, nevents); - maxalloc = MIN(KQ_NEVENTS, MAX(nchanges, nevents)); + maxalloc = KQ_NEVENTS; + netbsd32_kevent_ops.keo_private = kmem_alloc(maxalloc * sizeof(struct netbsd32_kevent), KM_SLEEP); Index: src/sys/compat/netbsd32/netbsd32_event.c diff -u src/sys/compat/netbsd32/netbsd32_event.c:1.10 src/sys/compat/netbsd32/netbsd32_event.c:1.11 --- src/sys/compat/netbsd32/netbsd32_event.c:1.10 Thu Jan 23 10:50:14 2014 +++ src/sys/compat/netbsd32/netbsd32_event.c Tue Jun 24 14:33:57 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_event.c,v 1.10 2014/01/23 10:50:14 manu Exp $ */ +/* $NetBSD: netbsd32_event.c,v 1.11 2014/06/24 14:33:57 maxv Exp $ */ /* * Copyright (c) 2005 The NetBSD Foundation. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_event.c,v 1.10 2014/01/23 10:50:14 manu Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_event.c,v 1.11 2014/06/24 14:33:57 maxv Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -112,7 +112,8 @@ netbsd32___kevent50(struct lwp *l, nchanges = SCARG(uap, nchanges); nevents = SCARG(uap, nevents); - maxalloc = MIN(KQ_NEVENTS, MAX(nchanges, nevents)); + maxalloc = KQ_NEVENTS; + netbsd32_kevent_ops.keo_private = kmem_alloc(maxalloc * sizeof(struct netbsd32_kevent), KM_SLEEP);