lkml.org 
[lkml]   [2019]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 068/241] KVM: arm/arm64: Ensure vcpu target is unset on reset failure
    Date
    [ Upstream commit 811328fc3222f7b55846de0cd0404339e2e1e6d7 ]

    A failed KVM_ARM_VCPU_INIT should not set the vcpu target,
    as the vcpu target is used by kvm_vcpu_initialized() to
    determine if other vcpu ioctls may proceed. We need to set
    the target before calling kvm_reset_vcpu(), but if that call
    fails, we should then unset it and clear the feature bitmap
    while we're at it.

    Signed-off-by: Andrew Jones <drjones@redhat.com>
    [maz: Simplified patch, completed commit message]
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/arm/kvm/arm.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    --- a/arch/arm/kvm/arm.c
    +++ b/arch/arm/kvm/arm.c
    @@ -744,7 +744,7 @@ int kvm_vm_ioctl_irq_line(struct kvm *kv
    static int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
    const struct kvm_vcpu_init *init)
    {
    - unsigned int i;
    + unsigned int i, ret;
    int phys_target = kvm_target_cpu();

    if (init->target != phys_target)
    @@ -779,9 +779,14 @@ static int kvm_vcpu_set_target(struct kv
    vcpu->arch.target = phys_target;

    /* Now we know what it is, we can reset it. */
    - return kvm_reset_vcpu(vcpu);
    -}
    + ret = kvm_reset_vcpu(vcpu);
    + if (ret) {
    + vcpu->arch.target = -1;
    + bitmap_zero(vcpu->arch.features, KVM_VCPU_MAX_FEATURES);
    + }

    + return ret;
    +}

    static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu,
    struct kvm_vcpu_init *init)

    \
     
     \ /
      Last update: 2019-06-09 18:59    [W:4.111 / U:0.468 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site