forked from pool/numactl
Thomas Renninger
a9e0e5bc30
- Add: 0001-Fixed-segfault-when-no-node-could-be-found-in-sysfs-.patch Fixes segfault when no node could be found in sysfs. bnc#872922 OBS-URL: https://build.opensuse.org/request/show/237246 OBS-URL: https://build.opensuse.org/package/show/Base:System/numactl?expand=0&rev=44
50 lines
1.2 KiB
Diff
50 lines
1.2 KiB
Diff
From a60b4ae108d7853f604e2d75147f6175ba908dfd Mon Sep 17 00:00:00 2001
|
|
From: Julian Wolf <juwolf@suse.com>
|
|
Date: Fri, 13 Jun 2014 14:24:36 +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(-)
|
|
|
|
diff --git a/distance.c b/distance.c
|
|
index 4a26972..84affa3 100755
|
|
--- a/distance.c
|
|
+++ b/distance.c
|
|
@@ -57,6 +57,7 @@ static int read_distance_table(void)
|
|
int maxnode = numa_max_node() + 1;
|
|
int *table = NULL;
|
|
int err = -1;
|
|
+ int cnt = 0;
|
|
|
|
for (nd = 0;; nd++) {
|
|
char fn[100];
|
|
@@ -70,6 +71,8 @@ static int read_distance_table(void)
|
|
continue;
|
|
else
|
|
break;
|
|
+ }else {
|
|
+ cnt++;
|
|
}
|
|
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
|
|
--
|
|
1.8.1.4
|
|
|