mirror of https://gitee.com/openkylin/linux.git
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: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
c8ed00107b
commit
cdfdef75e7
|
@ -11,6 +11,7 @@
|
|||
#include <linux/bitmap.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;
|
||||
|
||||
/**
|
||||
|
@ -609,9 +610,7 @@ static inline int cpulist_parse(const char *buf, struct cpumask *dstp)
|
|||
*/
|
||||
static inline size_t cpumask_size(void)
|
||||
{
|
||||
/* FIXME: Once all cpumask assignments are eliminated, this
|
||||
* can be nr_cpumask_bits */
|
||||
return BITS_TO_LONGS(NR_CPUS) * sizeof(long);
|
||||
return BITS_TO_LONGS(nr_cpumask_bits) * sizeof(long);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -89,13 +89,6 @@ bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node)
|
|||
dump_stack();
|
||||
}
|
||||
#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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue