Re: [PATCH] KVM: arm64: Fix the return value of smp_call_function_single()
From: Marc Zyngier <maz@kernel.org>
Date: 2021-01-18 11:22:46
Also in:
kvmarm, lkml
On 2021-01-18 09:31, Yejune Deng wrote:
quoted hunk ↗ jump to hunk
In smp_call_function_single(), the 3rd parameter isn't the return value and it's always positive. But it may return a negative value. So the 'ret' is should be the return value of the smp_call_function_single(). In check_kvm_target_cpu(), 'phys_target' is more readable than 'ret'. Signed-off-by: Yejune Deng <redacted> --- arch/arm64/kvm/arm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 04c44853b103..5fa5c04106de 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c@@ -1815,9 +1815,9 @@ static int init_hyp_mode(void) return err; } -static void check_kvm_target_cpu(void *ret) +static void check_kvm_target_cpu(void *phys_target) { - *(int *)ret = kvm_target_cpu(); + *(int *)phys_target = kvm_target_cpu(); } struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned longmpidr)@@ -1879,7 +1879,7 @@ void kvm_arch_irq_bypass_start(structirq_bypass_consumer *cons) int kvm_arch_init(void *opaque) { int err; - int ret, cpu; + int ret, cpu, phys_target; bool in_hyp_mode; if (!is_hyp_mode_available()) {@@ -1900,7 +1900,7 @@ int kvm_arch_init(void *opaque) "Only trusted guests should be used on this system.\n"); for_each_online_cpu(cpu) { - smp_call_function_single(cpu, check_kvm_target_cpu, &ret, 1); + ret = smp_call_function_single(cpu, check_kvm_target_cpu,&phys_target, 1); if (ret < 0) { kvm_err("Error, CPU %d not supported!\n", cpu); return -ENODEV;
That's not the purpose of this code. We check the target CPU
for so that we can decide to *fail* the KVM init if there is
a CPU we do not support (we definitely used to do that with
32bit), and the error message clearly states this.
So if you want to handle a cross-call failure, please do that.
But don't change the existing semantics of this code.
M.
--
Jazz is not dead. It just smells funny...
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel