diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cpumask.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/cpumask.c b/lib/cpumask.c index 8d03f22c6ced..3f258f58c85b 100644 --- a/lib/cpumask.c +++ b/lib/cpumask.c | |||
@@ -76,15 +76,14 @@ int cpumask_any_but(const struct cpumask *mask, unsigned int cpu) | |||
76 | 76 | ||
77 | /* These are not inline because of header tangles. */ | 77 | /* These are not inline because of header tangles. */ |
78 | #ifdef CONFIG_CPUMASK_OFFSTACK | 78 | #ifdef CONFIG_CPUMASK_OFFSTACK |
79 | bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags) | 79 | bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node) |
80 | { | 80 | { |
81 | if (likely(slab_is_available())) | 81 | if (likely(slab_is_available())) |
82 | *mask = kmalloc(cpumask_size(), flags); | 82 | *mask = kmalloc_node(cpumask_size(), flags, node); |
83 | else { | 83 | else { |
84 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS | 84 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS |
85 | printk(KERN_ERR | 85 | printk(KERN_ERR |
86 | "=> alloc_cpumask_var: kmalloc not available!\n"); | 86 | "=> alloc_cpumask_var: kmalloc not available!\n"); |
87 | dump_stack(); | ||
88 | #endif | 87 | #endif |
89 | *mask = NULL; | 88 | *mask = NULL; |
90 | } | 89 | } |
@@ -96,6 +95,12 @@ bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags) | |||
96 | #endif | 95 | #endif |
97 | return *mask != NULL; | 96 | return *mask != NULL; |
98 | } | 97 | } |
98 | EXPORT_SYMBOL(alloc_cpumask_var_node); | ||
99 | |||
100 | bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags) | ||
101 | { | ||
102 | return alloc_cpumask_var_node(mask, flags, numa_node_id()); | ||
103 | } | ||
99 | EXPORT_SYMBOL(alloc_cpumask_var); | 104 | EXPORT_SYMBOL(alloc_cpumask_var); |
100 | 105 | ||
101 | void __init alloc_bootmem_cpumask_var(cpumask_var_t *mask) | 106 | void __init alloc_bootmem_cpumask_var(cpumask_var_t *mask) |