diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2018-07-06 13:35:56 +0300 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2018-07-06 13:35:56 +0300 |
commit | 8f63e9230decb06ea9068feaf0845c0eb39ab890 (patch) | |
tree | a45cee821404ab0c7f7164e20c2f40f5e34ac16b /arch/x86/hyperv/hv_apic.c | |
parent | 58ec5e9c9044bd7e1c0bcc6ad822b2e909f49732 (diff) | |
parent | 1268ed0c474a5c8f165ef386f3310521b5e00e27 (diff) | |
download | linux-8f63e9230decb06ea9068feaf0845c0eb39ab890.tar.xz |
Merge branch 'x86/urgent' into x86/hyperv
Integrate the upstream bug fix to resolve the resulting conflict in
__send_ipi_mask().
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/hyperv/hv_apic.c')
-rw-r--r-- | arch/x86/hyperv/hv_apic.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/hyperv/hv_apic.c b/arch/x86/hyperv/hv_apic.c index 657a2b8c738a..0c3c9f8fee77 100644 --- a/arch/x86/hyperv/hv_apic.c +++ b/arch/x86/hyperv/hv_apic.c @@ -119,6 +119,8 @@ static bool __send_ipi_mask_ex(const struct cpumask *mask, int vector) ipi_arg->vp_set.format = HV_GENERIC_SET_SPARSE_4K; nr_bank = cpumask_to_vpset(&(ipi_arg->vp_set), mask); } + if (nr_bank < 0) + goto ipi_mask_ex_done; if (!nr_bank) ipi_arg->vp_set.format = HV_GENERIC_SET_ALL; @@ -165,6 +167,9 @@ static bool __send_ipi_mask(const struct cpumask *mask, int vector) for_each_cpu(cur_cpu, mask) { vcpu = hv_cpu_number_to_vp_number(cur_cpu); + if (vcpu == VP_INVAL) + return true; + /* * This particular version of the IPI hypercall can * only target upto 64 CPUs. |