Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Mar 2014 21:35:17 +0000 (UTC)
From:      Neel Natu <neel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r263194 - head/usr.bin/ktrdump
Message-ID:  <201403142135.s2ELZHM2000767@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201403142135.s2ELZHM2000767>