Commit 0774b4db authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] any_online_cpu fix

From: William Lee Irwin III <wli@holomorphy.com>

any_online_cpu() is required to and with cpu_online_map before
attempting to find an online cpu somewhere in the map; this patch adds
that logic to the implementation(s) of any_online_cpu().
parent bce22298
...@@ -27,7 +27,12 @@ ...@@ -27,7 +27,12 @@
#define cpus_shift_right(dst, src, n) do { dst = (src) >> (n); } while (0) #define cpus_shift_right(dst, src, n) do { dst = (src) >> (n); } while (0)
#define cpus_shift_left(dst, src, n) do { dst = (src) << (n); } while (0) #define cpus_shift_left(dst, src, n) do { dst = (src) << (n); } while (0)
#define any_online_cpu(map) ({ (map) ? first_cpu(map) : NR_CPUS; }) #define any_online_cpu(map) \
({ \
cpumask_t __tmp__; \
cpus_and(__tmp__, map, cpu_online_map); \
__tmp__ ? first_cpu(__tmp__) : NR_CPUS; \
})
#define CPU_MASK_ALL (~((cpumask_t)0) >> (8*sizeof(cpumask_t) - NR_CPUS)) #define CPU_MASK_ALL (~((cpumask_t)0) >> (8*sizeof(cpumask_t) - NR_CPUS))
#define CPU_MASK_NONE ((cpumask_t)0) #define CPU_MASK_NONE ((cpumask_t)0)
......
...@@ -36,7 +36,13 @@ ...@@ -36,7 +36,13 @@
cpu_set(cpu, __cpu_mask); \ cpu_set(cpu, __cpu_mask); \
__cpu_mask; \ __cpu_mask; \
}) })
#define any_online_cpu(map) find_first_bit((map).mask, NR_CPUS) #define any_online_cpu(map) \
({ \
cpumask_t __tmp__; \
cpus_and(__tmp__, map, cpu_online_map); \
find_first_bit(__tmp__.mask, NR_CPUS); \
})
/* /*
* um, these need to be usable as static initializers * um, these need to be usable as static initializers
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment