Accepting request 242817 from home:juwolf:branches:Base:System

Fixed patch 0001-Fixed-segfault-when-no-node-could-be-found-in-sysfs-.patch for bnc#872922

OBS-URL: https://build.opensuse.org/request/show/242817
OBS-URL: https://build.opensuse.org/package/show/Base:System/numactl?expand=0&rev=46
This commit is contained in:
Marcus Meissner 2014-07-30 09:44:21 +00:00 committed by Git OBS Bridge
parent a9e0e5bc30
commit d2661eb6b4
2 changed files with 31 additions and 31 deletions

View File

@ -1,49 +1,43 @@
From a60b4ae108d7853f604e2d75147f6175ba908dfd Mon Sep 17 00:00:00 2001
From 5dce07818a2f2c6ebde399f58702fe5beecb2eed Mon Sep 17 00:00:00 2001
From: Julian Wolf <juwolf@suse.com>
Date: Fri, 13 Jun 2014 14:24:36 +0200
Date: Fri, 18 Jul 2014 14:05:05 +0200
Subject: [PATCH] Fixed segfault when no node could be found in sysfs
bnc#872922
---
distance.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
distance.c | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/distance.c b/distance.c
index 4a26972..84affa3 100755
index 4a26972..5db7fe2 100755
--- a/distance.c
+++ b/distance.c
@@ -57,6 +57,7 @@ static int read_distance_table(void)
int maxnode = numa_max_node() + 1;
@@ -58,19 +58,16 @@ static int read_distance_table(void)
int *table = NULL;
int err = -1;
+ int cnt = 0;
for (nd = 0;; nd++) {
- for (nd = 0;; nd++) {
+ for (nd = 0; nd < maxnode; nd++) {
char fn[100];
@@ -70,6 +71,8 @@ static int read_distance_table(void)
continue;
else
break;
+ }else {
+ cnt++;
}
FILE *dfh;
sprintf(fn, "/sys/devices/system/node/node%d/distance", nd);
dfh = fopen(fn, "r");
- if (!dfh) {
- if (errno == ENOENT)
- err = 0;
- if (!err && nd<maxnode)
- continue;
- else
- break;
- }
+ if (dfh)
+ err = 0;
+ else
+ continue;
+
len = getdelim(&line, &linelen, '\n', dfh);
fclose(dfh);
@@ -87,12 +90,12 @@ static int read_distance_table(void)
parse_numbers(line, table + nd * maxnode);
}
free(line);
- if (err) {
+ if (err || !cnt) {
numa_warn(W_distance,
"Cannot parse distance information in sysfs: %s",
strerror(errno));
free(table);
- return err;
+ return -1;
}
/* Update the global table pointer. Race window here with
other threads, but in the worst case we leak one distance
if (len <= 0)
--
1.8.1.4

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Tue Jul 29 08:26:28 UTC 2014 - juwolf@suse.com
- Fixed patch 0001-Fixed-segfault-when-no-node-could-be-found-in-sysfs-.patch
for bnc#872922
-------------------------------------------------------------------
Fri Jun 13 14:27:32 UTC 2014 - juwolf@suse.com