提交 cdfdef75 编写于 作者: R Rusty Russell

cpumask: only allocate nr_cpumask_bits.

Now we'll find out the hard way if anyone has CPUMASK_OFFSTACK and is
returning these or assigning them.
Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
上级 c8ed0010
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/bitmap.h> #include <linux/bitmap.h>
#include <linux/bug.h> #include <linux/bug.h>
/* Don't assign or return these: may not be this big! */
typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t; typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;
/** /**
...@@ -609,9 +610,7 @@ static inline int cpulist_parse(const char *buf, struct cpumask *dstp) ...@@ -609,9 +610,7 @@ static inline int cpulist_parse(const char *buf, struct cpumask *dstp)
*/ */
static inline size_t cpumask_size(void) static inline size_t cpumask_size(void)
{ {
/* FIXME: Once all cpumask assignments are eliminated, this return BITS_TO_LONGS(nr_cpumask_bits) * sizeof(long);
* can be nr_cpumask_bits */
return BITS_TO_LONGS(NR_CPUS) * sizeof(long);
} }
/* /*
......
...@@ -89,13 +89,6 @@ bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node) ...@@ -89,13 +89,6 @@ bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node)
dump_stack(); dump_stack();
} }
#endif #endif
/* FIXME: Bandaid to save us from old primitives which go to NR_CPUS. */
if (*mask) {
unsigned char *ptr = (unsigned char *)cpumask_bits(*mask);
unsigned int tail;
tail = BITS_TO_LONGS(NR_CPUS - nr_cpumask_bits) * sizeof(long);
memset(ptr + cpumask_size() - tail, 0, tail);
}
return *mask != NULL; return *mask != NULL;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册