Module Name: src Committed By: christos Date: Thu Nov 17 01:19:37 UTC 2011
Modified Files: src/sys/kern: kern_event.c Log Message: PR/45618: Motoyuki OHMORI: kqueue EVFILT_TIMER with smaller timeout value makes DIAGNOSTIC kernel panic: KASSERT((c->c_flags & CALLOUT_PENDING) != 0); If the computed ticks are <= 0 set it to 1 To generate a diff of this commit: cvs rdiff -u -r1.72 -r1.73 src/sys/kern/kern_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/kern/kern_event.c diff -u src/sys/kern/kern_event.c:1.72 src/sys/kern/kern_event.c:1.73 --- src/sys/kern/kern_event.c:1.72 Sun Jun 26 12:42:42 2011 +++ src/sys/kern/kern_event.c Wed Nov 16 20:19:37 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_event.c,v 1.72 2011/06/26 16:42:42 christos Exp $ */ +/* $NetBSD: kern_event.c,v 1.73 2011/11/17 01:19:37 christos Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_event.c,v 1.72 2011/06/26 16:42:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_event.c,v 1.73 2011/11/17 01:19:37 christos Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -598,6 +598,8 @@ filt_timerexpire(void *knx) knote_activate(kn); if ((kn->kn_flags & EV_ONESHOT) == 0) { tticks = mstohz(kn->kn_sdata); + if (tticks <= 0) + tticks = 1; callout_schedule((callout_t *)kn->kn_hook, tticks); } mutex_exit(&kqueue_misc_lock);