lkml.org 
[lkml]   [2016]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 051/342] KVM: s390: fix guest fprs memory leak
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: David Hildenbrand <dahi@linux.vnet.ibm.com>

    commit 9c7ebb613bffea2feef4ec562ba1dbcaa810942b upstream.

    fprs is never freed, therefore resulting in a memory leak if
    kvm_vcpu_init() fails or the vcpu is destroyed.

    Fixes: 9977e886cbbc ("s390/kernel: lazy restore fpu registers")
    Reported-by: Eric Farman <farman@linux.vnet.ibm.com>
    Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
    Reviewed-by: Eric Farman <farman@linux.vnet.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/s390/kvm/kvm-s390.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    --- a/arch/s390/kvm/kvm-s390.c
    +++ b/arch/s390/kvm/kvm-s390.c
    @@ -1202,6 +1202,7 @@ void kvm_arch_vcpu_destroy(struct kvm_vc

    if (vcpu->kvm->arch.use_cmma)
    kvm_s390_vcpu_unsetup_cmma(vcpu);
    + kfree(vcpu->arch.guest_fpregs.fprs);
    free_page((unsigned long)(vcpu->arch.sie_block));

    kvm_vcpu_uninit(vcpu);
    @@ -1516,12 +1517,14 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st

    rc = kvm_vcpu_init(vcpu, kvm, id);
    if (rc)
    - goto out_free_sie_block;
    + goto out_free_fprs;
    VM_EVENT(kvm, 3, "create cpu %d at %p, sie block at %p", id, vcpu,
    vcpu->arch.sie_block);
    trace_kvm_s390_create_vcpu(id, vcpu, vcpu->arch.sie_block);

    return vcpu;
    +out_free_fprs:
    + kfree(vcpu->arch.guest_fpregs.fprs);
    out_free_sie_block:
    free_page((unsigned long)(vcpu->arch.sie_block));
    out_free_cpu:
    \
     
     \ /
      Last update: 2016-03-02 03:01    [W:4.106 / U:0.200 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site