diff -up numactl-2.0.6/libnuma.c.orig numactl-2.0.6/libnuma.c --- numactl-2.0.6/libnuma.c.orig 2010-12-29 08:23:11.000000000 -0500 +++ numactl-2.0.6/libnuma.c 2011-01-04 16:10:58.514024338 -0500 @@ -1263,9 +1263,10 @@ numa_node_to_cpus_v1(int node, unsigned sprintf(fn, "/sys/devices/system/node/node%d/cpumap", node); f = fopen(fn, "r"); if (!f || getdelim(&line, &len, '\n', f) < 1) { - numa_warn(W_nosysfs2, - "/sys not mounted or invalid. Assuming one node: %s", - strerror(errno)); + if (f) + numa_warn(W_nosysfs2, + "/sys not mounted or invalid. Assuming one node: %s", + strerror(errno)); bitmask.maskp = (unsigned long *)mask; bitmask.size = buflen_needed * 8; numa_bitmask_setall(&bitmask); @@ -1341,13 +1342,15 @@ numa_node_to_cpus_v2(int node, struct bi sprintf(fn, "/sys/devices/system/node/node%d/cpumap", node); f = fopen(fn, "r"); if (!f || getdelim(&line, &len, '\n', f) < 1) { - numa_warn(W_nosysfs2, - "/sys not mounted or invalid. Assuming one node: %s", - strerror(errno)); - numa_warn(W_nosysfs2, - "(cannot open or correctly parse %s)", fn); - numa_bitmask_setall(mask); - err = -1; + if (f) { + numa_warn(W_nosysfs2, + "/sys not mounted or invalid. Assuming one node: %s", + strerror(errno)); + numa_warn(W_nosysfs2, + "(cannot open or correctly parse %s)", fn); + numa_bitmask_setall(mask); + err = -1; + } } if (f) fclose(f);