|
@@ -27,13 +27,21 @@ static struct bus_type node_subsys = {
|
|
|
|
|
|
static ssize_t node_read_cpumap(struct device *dev, bool list, char *buf)
|
|
|
{
|
|
|
+ ssize_t n;
|
|
|
+ cpumask_var_t mask;
|
|
|
struct node *node_dev = to_node(dev);
|
|
|
- const struct cpumask *mask = cpumask_of_node(node_dev->dev.id);
|
|
|
|
|
|
/* 2008/04/07: buf currently PAGE_SIZE, need 9 chars per 32 bits. */
|
|
|
BUILD_BUG_ON((NR_CPUS/32 * 9) > (PAGE_SIZE-1));
|
|
|
|
|
|
- return cpumap_print_to_pagebuf(list, buf, mask);
|
|
|
+ if (!alloc_cpumask_var(&mask, GFP_KERNEL))
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ cpumask_and(mask, cpumask_of_node(node_dev->dev.id), cpu_online_mask);
|
|
|
+ n = cpumap_print_to_pagebuf(list, buf, mask);
|
|
|
+ free_cpumask_var(mask);
|
|
|
+
|
|
|
+ return n;
|
|
|
}
|
|
|
|
|
|
static inline ssize_t node_read_cpumask(struct device *dev,
|