svn commit: r263194 - head/usr.bin/ktrdump

Neel Natu neel at FreeBSD.org
Fri Mar 14 21:35:17 UTC 2014


Author: neel
Date: Fri Mar 14 21:35:16 2014
New Revision: 263194
URL: http://svnweb.freebsd.org/changeset/base/263194

Log:
  Fix an issue with ktrdump(8) where it would not print all entries in the
  KTR buffer.
  
  This happens when 'i' tries to wrap around from 0 to 'entries - 1'. Since 'i'
  is a signed integer the modulo operation actually returns a negative number.
  
  Fix this by computing the next index to use "by hand" instead of relying
  on the modulo operator.

Modified:
  head/usr.bin/ktrdump/ktrdump.c

Modified: head/usr.bin/ktrdump/ktrdump.c
==============================================================================
--- head/usr.bin/ktrdump/ktrdump.c	Fri Mar 14 21:18:41 2014	(r263193)
+++ head/usr.bin/ktrdump/ktrdump.c	Fri Mar 14 21:35:16 2014	(r263194)
@@ -219,8 +219,11 @@ main(int ac, char **av)
 	/*
 	 * Now tear through the trace buffer.
 	 */
-	if (!iflag)
-		i = (index - 1) % entries;
+	if (!iflag) {
+		i = index - 1;
+		if (i < 0)
+			i = entries - 1;
+	}
 	tlast = -1;
 	for (;;) {
 		if (buf[i].ktr_desc == NULL)
@@ -288,7 +291,8 @@ next:			if ((c = *p++) == '\0')
 		if (!iflag) {
 			if (i == index)
 				break;
-			i = (i - 1) % entries;
+			if (--i < 0)
+				i = entries - 1;
 		} else {
 			if (++i == entries)
 				break;


More information about the svn-src-head mailing list