Skip to content

Commit

Permalink
Fix a SEGV due to uninitialised mask
Browse files Browse the repository at this point in the history
As node_cpu_mask_v2 is not defined as local to the compilation unit with
'static', it is not guaranteed to be initialised to zero (ie in the .bss).
This was leading to some SEGVs we've seen.

Also mark another internal function local to the compilation unit.

Signed-off-by: Daniel J Blueman <daniel@numascale.com>
  • Loading branch information
dblueman authored and filbranden committed Feb 18, 2015
1 parent 8535ad1 commit 6a7c2cf
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions libnuma.c
Expand Up @@ -58,7 +58,7 @@ struct bitmask *numa_possible_cpus_ptr = NULL;
struct bitmask *numa_nodes_ptr = NULL;
static struct bitmask *numa_memnode_ptr = NULL;
static unsigned long *node_cpu_mask_v1[NUMA_NUM_NODES];
struct bitmask **node_cpu_mask_v2;
static struct bitmask **node_cpu_mask_v2;

WEAK void numa_error(char *where);

Expand Down Expand Up @@ -1234,7 +1234,7 @@ numa_parse_bitmap_v2(char *line, struct bitmask *mask)
__asm__(".symver numa_parse_bitmap_v2,numa_parse_bitmap@@libnuma_1.2");

void
init_node_cpu_mask_v2(void)
static init_node_cpu_mask_v2(void)
{
int nnodes = numa_max_possible_node_v2_int() + 1;
node_cpu_mask_v2 = calloc (nnodes, sizeof(struct bitmask *));
Expand Down

0 comments on commit 6a7c2cf

Please sign in to comment.