lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1285277887-14190-3-git-send-email-sbohrer@rgmadvisors.com>
Date:	Thu, 23 Sep 2010 16:38:07 -0500
From:	Shawn Bohrer <sbohrer@...advisors.com>
To:	arjan@...ux.intel.com, nhorman@...driver.com
Cc:	tomk@...advisors.com, danb@...advisors.com,
	linux-kernel@...r.kernel.org,
	Shawn Bohrer <sbohrer@...advisors.com>
Subject: [PATCH 2/2] Special interrupt counts line NMI may start with a space

The kernel determines the maximum number of possible IRQs and pads the
first field of /proc/interrupts appropriately.  With four or more digits
of precession the special interrupt counts all start with a space
instead of a letter.  This caused the special interrupt counts to be
counted on my system and that caused the cpunr count to be off when it
reached the ERR and MIS lines forcing a CPU rescan.

Signed-off-by: Shawn Bohrer <sbohrer@...advisors.com>
---
 procinterrupts.c |   24 +++++++++++-------------
 1 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/procinterrupts.c b/procinterrupts.c
index e336efe..322f4de 100644
--- a/procinterrupts.c
+++ b/procinterrupts.c
@@ -55,20 +55,18 @@ void parse_proc_interrupts(void)
 		if (getline(&line, &size, file)==0)
 			break;
 
-
+		number = strtoul(line, &c, 10);
 		/* lines with letters in front are special, like NMI count. Ignore */
-		if (!(line[0]==' ' || (line[0]>='0' && line[0]<='9')))
-			break;
-		c = strchr(line, ':');
-		if (!c)
+		if (line == c)
+			continue;
+
+		if (c[0] == ':')
+			++c;
+		else
 			continue;
-		*c = 0;
-		c++;
-		number = strtoul(line, NULL, 10);
+
 		count = 0;
 		cpunr = 0;
-
-		c2=NULL;
 		while (1) {
 			uint64_t C;
 			C = strtoull(c, &c2, 10);
@@ -78,11 +76,11 @@ void parse_proc_interrupts(void)
 			c=c2;
 			cpunr++;
 		}
-		if (cpunr != core_count) 
+		if (cpunr != core_count)
 			need_cpu_rescan = 1;
-		
+
 		set_interrupt_count(number, count);
-	}		
+	}
 	fclose(file);
 	free(line);
 }
-- 
1.6.5.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ