svn commit: r217450 - stable/8/sys/net
Robert Watson
rwatson at FreeBSD.org
Sat Jan 15 19:05:07 UTC 2011
Author: rwatson
Date: Sat Jan 15 19:05:06 2011
New Revision: 217450
URL: http://svn.freebsd.org/changeset/base/217450
Log:
Merge r204303 from head to stable/8:
Fix edge cases in several KASSERTs: use <= rather than < when testing that
counters have not gone about MAXCPU or NETISR_MAXPROT. These problems
caused panics on UP kernels with INVARIANTS when using sysctl -a, but
would also have caused problems for 32-core boxes or if the netisr
protocol vector was fully populated.
Reported by: nwhitehorn, Neel Natu <neelnatu at gmail.com>
Modified:
stable/8/sys/net/netisr.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/net/netisr.c
==============================================================================
--- stable/8/sys/net/netisr.c Sat Jan 15 19:02:08 2011 (r217449)
+++ stable/8/sys/net/netisr.c Sat Jan 15 19:05:06 2011 (r217450)
@@ -1159,7 +1159,7 @@ sysctl_netisr_proto(SYSCTL_HANDLER_ARGS)
counter++;
}
NETISR_RUNLOCK(&tracker);
- KASSERT(counter < NETISR_MAXPROT,
+ KASSERT(counter <= NETISR_MAXPROT,
("sysctl_netisr_proto: counter too big (%d)", counter));
error = SYSCTL_OUT(req, snp_array, sizeof(*snp_array) * counter);
free(snp_array, M_TEMP);
@@ -1212,7 +1212,7 @@ sysctl_netisr_workstream(SYSCTL_HANDLER_
counter++;
}
NETISR_RUNLOCK(&tracker);
- KASSERT(counter < MAXCPU,
+ KASSERT(counter <= MAXCPU,
("sysctl_netisr_workstream: counter too big (%d)", counter));
error = SYSCTL_OUT(req, snws_array, sizeof(*snws_array) * counter);
free(snws_array, M_TEMP);
@@ -1273,7 +1273,7 @@ sysctl_netisr_work(SYSCTL_HANDLER_ARGS)
}
NWS_UNLOCK(nwsp);
}
- KASSERT(counter < MAXCPU * NETISR_MAXPROT,
+ KASSERT(counter <= MAXCPU * NETISR_MAXPROT,
("sysctl_netisr_work: counter too big (%d)", counter));
NETISR_RUNLOCK(&tracker);
error = SYSCTL_OUT(req, snw_array, sizeof(*snw_array) * counter);
More information about the svn-src-stable-8
mailing list