Blame SOURCES/fix-parse_affinity-for-CPU-numbers-greater-than-31.patch

4cad9c
From 56cec3cf78392f2464f28129b1de70c53616de26 Mon Sep 17 00:00:00 2001
4cad9c
From: Jozef Bacik <jobacik@redhat.com>
4cad9c
Date: Wed, 24 Aug 2016 11:05:05 +0100
4cad9c
Subject: [PATCH] fix parse_affinity for CPU numbers greater than 31
4cad9c
4cad9c
The function parse_affinity reports wrong results for CPU numbers
4cad9c
greater than 31.
4cad9c
4cad9c
The problem is caused by the function bitmastlist which parse_affinity
4cad9c
calls. The fix treats the inpput line as a long hexbitmask instead of an
4cad9c
array in order to produce correct results
4cad9c
4cad9c
Signed-off-by: Jozef Bacik <jobacik@redhat.com>
4cad9c
Signed-off-by: John Kacur <jkacur@redhat.com>
4cad9c
---
4cad9c
 procfs/utilist.py | 16 ++++++----------
4cad9c
 1 file changed, 6 insertions(+), 10 deletions(-)
4cad9c
4cad9c
diff --git a/procfs/utilist.py b/procfs/utilist.py
4cad9c
index 18645c0ba45e..0e7c24f45cda 100755
4cad9c
--- a/procfs/utilist.py
4cad9c
+++ b/procfs/utilist.py
4cad9c
@@ -37,18 +37,14 @@ def hexbitmask(l, nr_entries):
4cad9c
 	return hexbitmask
4cad9c
 
4cad9c
 def bitmasklist(line, nr_entries):
4cad9c
-	fields = line.strip().split(",")
4cad9c
+	hexmask = line.strip().replace(",", "")
4cad9c
 	bitmasklist = []
4cad9c
 	entry = 0
4cad9c
-	for i in range(len(fields) - 1, -1, -1):
4cad9c
-		mask = int(fields[i], 16)
4cad9c
-		while mask != 0:
4cad9c
-			if mask & 1:
4cad9c
-				bitmasklist.append(entry)
4cad9c
-			mask >>= 1
4cad9c
-			entry += 1
4cad9c
-			if entry == nr_entries:
4cad9c
-				break
4cad9c
+	bitmask = bin(int(hexmask, 16))[2::]
4cad9c
+	for i in reversed(bitmask):
4cad9c
+		if int(i) & 1:
4cad9c
+			bitmasklist.append(entry)
4cad9c
+		entry +=1
4cad9c
 		if entry == nr_entries:
4cad9c
 			break
4cad9c
 	return bitmasklist
4cad9c
-- 
4cad9c
2.4.11
4cad9c