lkml.org 
[lkml]   [2019]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.0 20/34] KVM: arm/arm64: Ensure vcpu target is unset on reset failure
    Date
    From: Andrew Jones <drjones@redhat.com>

    [ 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>
    ---
    virt/kvm/arm/arm.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
    index 9c486fad3f9f8..6202b4f718cea 100644
    --- a/virt/kvm/arm/arm.c
    +++ b/virt/kvm/arm/arm.c
    @@ -949,7 +949,7 @@ int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level,
    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)
    @@ -984,9 +984,14 @@ static int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
    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)
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-05-16 13:48    [W:4.020 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site