diff mbox

[2/4] KVM: s390: fix wrong lookup of VCPUs by array index

Message ID 1447922251-54261-3-git-send-email-borntraeger@de.ibm.com
State Accepted
Headers show

Commit Message

Christian Borntraeger Nov. 19, 2015, 8:37 a.m. UTC
From: David Hildenbrand <dahi@linux.vnet.ibm.com>

For now, VCPUs were always created sequentially with incrementing
VCPU ids. Therefore, the index in the VCPUs array matched the id.

As sequential creation might change with cpu hotplug, let's use
the correct lookup function to find a VCPU by id, not array index.

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
[split stable/non-stable parts]
Cc: stable@vger.kernel.org # c3853a8: KVM: Provide function for VCPU lookup by id
---
 arch/s390/kvm/sigp.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

Comments

Christian Borntraeger Nov. 19, 2015, 8:52 a.m. UTC | #1
Sigh.
Seems that my mail script got confused by the # after stable. So please
strip down the cc list.


On 11/19/2015 09:37 AM, Christian Borntraeger wrote:
> From: David Hildenbrand <dahi@linux.vnet.ibm.com>
> 
> For now, VCPUs were always created sequentially with incrementing
> VCPU ids. Therefore, the index in the VCPUs array matched the id.
> 
> As sequential creation might change with cpu hotplug, let's use
> the correct lookup function to find a VCPU by id, not array index.
> 
> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> [split stable/non-stable parts]
> Cc: stable@vger.kernel.org # c3853a8: KVM: Provide function for VCPU lookup by id
> ---
>  arch/s390/kvm/sigp.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
> index da690b6..081dbd0 100644
> --- a/arch/s390/kvm/sigp.c
> +++ b/arch/s390/kvm/sigp.c
> @@ -291,12 +291,8 @@ static int handle_sigp_dst(struct kvm_vcpu *vcpu, u8 order_code,
>  			   u16 cpu_addr, u32 parameter, u64 *status_reg)
>  {
>  	int rc;
> -	struct kvm_vcpu *dst_vcpu;
> +	struct kvm_vcpu *dst_vcpu = kvm_lookup_vcpu(vcpu->kvm, cpu_addr);
> 
> -	if (cpu_addr >= KVM_MAX_VCPUS)
> -		return SIGP_CC_NOT_OPERATIONAL;
> -
> -	dst_vcpu = kvm_get_vcpu(vcpu->kvm, cpu_addr);
>  	if (!dst_vcpu)
>  		return SIGP_CC_NOT_OPERATIONAL;
> 
> @@ -478,7 +474,7 @@ int kvm_s390_handle_sigp_pei(struct kvm_vcpu *vcpu)
>  	trace_kvm_s390_handle_sigp_pei(vcpu, order_code, cpu_addr);
> 
>  	if (order_code == SIGP_EXTERNAL_CALL) {
> -		dest_vcpu = kvm_get_vcpu(vcpu->kvm, cpu_addr);
> +		dest_vcpu = kvm_lookup_vcpu(vcpu->kvm, cpu_addr);
>  		BUG_ON(dest_vcpu == NULL);
> 
>  		kvm_s390_vcpu_wakeup(dest_vcpu);
> 

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
index da690b6..081dbd0 100644
--- a/arch/s390/kvm/sigp.c
+++ b/arch/s390/kvm/sigp.c
@@ -291,12 +291,8 @@  static int handle_sigp_dst(struct kvm_vcpu *vcpu, u8 order_code,
 			   u16 cpu_addr, u32 parameter, u64 *status_reg)
 {
 	int rc;
-	struct kvm_vcpu *dst_vcpu;
+	struct kvm_vcpu *dst_vcpu = kvm_lookup_vcpu(vcpu->kvm, cpu_addr);
 
-	if (cpu_addr >= KVM_MAX_VCPUS)
-		return SIGP_CC_NOT_OPERATIONAL;
-
-	dst_vcpu = kvm_get_vcpu(vcpu->kvm, cpu_addr);
 	if (!dst_vcpu)
 		return SIGP_CC_NOT_OPERATIONAL;
 
@@ -478,7 +474,7 @@  int kvm_s390_handle_sigp_pei(struct kvm_vcpu *vcpu)
 	trace_kvm_s390_handle_sigp_pei(vcpu, order_code, cpu_addr);
 
 	if (order_code == SIGP_EXTERNAL_CALL) {
-		dest_vcpu = kvm_get_vcpu(vcpu->kvm, cpu_addr);
+		dest_vcpu = kvm_lookup_vcpu(vcpu->kvm, cpu_addr);
 		BUG_ON(dest_vcpu == NULL);
 
 		kvm_s390_vcpu_wakeup(dest_vcpu);