lkml.org 
[lkml]   [2015]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 58/63] arm/arm64: KVM: Don't allow creating VCPUs after vgic_initialized
    Date
    From: Christoffer Dall <christoffer.dall@linaro.org>

    3.12-stable review patch. If anyone has any objections, please let me know.

    ===============

    commit 716139df2517fbc3f2306dbe8eba0fa88dca0189 upstream.

    When the vgic initializes its internal state it does so based on the
    number of VCPUs available at the time. If we allow KVM to create more
    VCPUs after the VGIC has been initialized, we are likely to error out in
    unfortunate ways later, perform buffer overflows etc.

    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: Eric Auger <eric.auger@linaro.org>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    ---
    arch/arm/kvm/arm.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
    index d1c5946e33a2..86dee11838ab 100644
    --- a/arch/arm/kvm/arm.c
    +++ b/arch/arm/kvm/arm.c
    @@ -218,6 +218,11 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id)
    int err;
    struct kvm_vcpu *vcpu;

    + if (irqchip_in_kernel(kvm) && vgic_initialized(kvm)) {
    + err = -EBUSY;
    + goto out;
    + }
    +
    vcpu = kmem_cache_zalloc(kvm_vcpu_cache, GFP_KERNEL);
    if (!vcpu) {
    err = -ENOMEM;
    --
    2.3.5


    \
     
     \ /
      Last update: 2015-04-30 14:41    [W:2.709 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site