lib/cpumask: reorganize cpumask_local_spread() logic
[linux-2.6-block.git] / lib / cpumask.c
index 255974cd6734f19677dd0d2f1f9be935ffb57b35..10aa15715c0d29731dc7acba367a34c084d815e8 100644 (file)
@@ -127,16 +127,12 @@ unsigned int cpumask_local_spread(unsigned int i, int node)
        /* Wrap: we always want a cpu. */
        i %= num_online_cpus();
 
-       if (node == NUMA_NO_NODE) {
-               cpu = cpumask_nth(i, cpu_online_mask);
-               if (cpu < nr_cpu_ids)
-                       return cpu;
-       } else {
-               cpu = sched_numa_find_nth_cpu(cpu_online_mask, i, node);
-               if (cpu < nr_cpu_ids)
-                       return cpu;
-       }
-       BUG();
+       cpu = (node == NUMA_NO_NODE) ?
+               cpumask_nth(i, cpu_online_mask) :
+               sched_numa_find_nth_cpu(cpu_online_mask, i, node);
+
+       WARN_ON(cpu >= nr_cpu_ids);
+       return cpu;
 }
 EXPORT_SYMBOL(cpumask_local_spread);