[PATCH] Fix a SEGV due to uninitialised mask
Daniel J Blueman <[email protected]> Tue, 17 Feb 2015 12:06:51 +0800
| Newsgroups | org.kernel.vger.linux-numa |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> --- libnuma.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libnuma.c b/libnuma.c index 8d7bf13..3717d5b 100644 --- a/libnuma.c +++ b/libnuma.c @@ -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); @@ -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 *)); -- 1.9.1