Commit 214e270b authored by Alexander Gordeev's avatar Alexander Gordeev Committed by Ingo Molnar

x86/apic/es7000+summit: Always make valid apicid from a cpumask

In case of invalid parameters cpu_mask_to_apicid_and() might
return apicid value of 0 (on Summit) or a uninitialized value
(on ES7000), although it is supposed to return apicid of cpu-0
at least. Fix the operation to always return a valid apicid.
Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/20120614075026.GH3383@dhcp-26-207.brq.redhat.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 49ad3fd4
...@@ -545,6 +545,8 @@ es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) ...@@ -545,6 +545,8 @@ es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
apicid = new_apicid; apicid = new_apicid;
round++; round++;
} }
if (!round)
return -EINVAL;
*dest_id = apicid; *dest_id = apicid;
return 0; return 0;
} }
......
...@@ -282,6 +282,8 @@ summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) ...@@ -282,6 +282,8 @@ summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
apicid |= new_apicid; apicid |= new_apicid;
round++; round++;
} }
if (!round)
return -EINVAL;
*dest_id = apicid; *dest_id = apicid;
return 0; return 0;
} }
......
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