From patchwork Fri Nov 21 17:21:07 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 41333 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wg0-f72.google.com (mail-wg0-f72.google.com [74.125.82.72]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 7216823C27 for ; Fri, 21 Nov 2014 17:26:55 +0000 (UTC) Received: by mail-wg0-f72.google.com with SMTP id y19sf3310188wgg.3 for ; Fri, 21 Nov 2014 09:26:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:subject:date:message-id :in-reply-to:references:cc:precedence:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:mime-version :content-type:content-transfer-encoding:sender:errors-to :x-original-sender:x-original-authentication-results:mailing-list; bh=rhiT3EICCQKAYpT3M/kRCFbdfPv63Yro/wvmw9rWnRI=; b=BV5LzWnaMF7j/7gJWT4C7GmBvyNODGQFFcXhuHC7Hg3AIN5xv/i5Lhjrwsce+WR7te nki6fmymGYhYcXDLrwT/DKZuBKDrO//SGbL0Vm/Xk+G2JFWNIJKGcc83afVvTniriXCd 5VIgtQZHR4B9L1E/qs2ANoNvEfvBI5ikH7LxIVKwEhxnBYtKrDipg0baP7zPuzr01tZJ vM1ggsdo5SjEy05UHWnSo0yEUDVTQKAheDBh2yGnNTkmyMynOdR5Y7vHpPDw9XraruD0 M6thBN7b006ib2D3yKmFIH/wsei0qtdWtv3yIj5Lw0zqpTVP/9swIKcgS/W+c0vrAX4w Ob7Q== X-Gm-Message-State: ALoCoQnZE+VKxx3v5NvnwZnCvevz1aCLOHzwA3NcGeC2AwDR5HPXX5jHg6X0yiq4oayl3/LodRNk X-Received: by 10.112.50.243 with SMTP id f19mr1924825lbo.1.1416590811862; Fri, 21 Nov 2014 09:26:51 -0800 (PST) X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.88.1 with SMTP id bc1ls239721lab.24.gmail; Fri, 21 Nov 2014 09:26:51 -0800 (PST) X-Received: by 10.112.150.71 with SMTP id ug7mr6442562lbb.73.1416590811627; Fri, 21 Nov 2014 09:26:51 -0800 (PST) Received: from mail-la0-f47.google.com (mail-la0-f47.google.com. [209.85.215.47]) by mx.google.com with ESMTPS id vr4si6516820lbb.110.2014.11.21.09.26.51 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 21 Nov 2014 09:26:51 -0800 (PST) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.47 as permitted sender) client-ip=209.85.215.47; Received: by mail-la0-f47.google.com with SMTP id hz20so4520374lab.20 for ; Fri, 21 Nov 2014 09:26:51 -0800 (PST) X-Received: by 10.112.52.37 with SMTP id q5mr6483571lbo.32.1416590811366; Fri, 21 Nov 2014 09:26:51 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.184.201 with SMTP id ew9csp131716lbc; Fri, 21 Nov 2014 09:26:50 -0800 (PST) X-Received: by 10.66.139.106 with SMTP id qx10mr9461060pab.138.1416590809689; Fri, 21 Nov 2014 09:26:49 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org. [198.137.202.9]) by mx.google.com with ESMTPS id bo9si9822871pdb.109.2014.11.21.09.26.49 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 21 Nov 2014 09:26:49 -0800 (PST) Received-SPF: none (google.com: linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org does not designate permitted sender hosts) client-ip=198.137.202.9; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Xrruv-0005mD-6G; Fri, 21 Nov 2014 17:22:45 +0000 Received: from foss-mx-na.foss.arm.com ([217.140.108.86]) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Xrrtz-0004eW-59 for linux-arm-kernel@lists.infradead.org; Fri, 21 Nov 2014 17:21:47 +0000 Received: from foss-smtp-na-1.foss.arm.com (unknown [10.80.61.8]) by foss-mx-na.foss.arm.com (Postfix) with ESMTP id 208874E0; Fri, 21 Nov 2014 11:21:17 -0600 (CST) Received: from collaborate-mta1.arm.com (highbank-bc01-b06.austin.arm.com [10.112.81.134]) by foss-smtp-na-1.foss.arm.com (Postfix) with ESMTP id C1F235FAD8; Fri, 21 Nov 2014 11:21:14 -0600 (CST) Received: from approximate.cambridge.arm.com (approximate.cambridge.arm.com [10.1.209.28]) by collaborate-mta1.arm.com (Postfix) with ESMTP id 3A31613F8F5; Fri, 21 Nov 2014 11:21:13 -0600 (CST) From: Marc Zyngier To: Paolo Bonzini Subject: [PATCH 3/3] arm/arm64: KVM: vgic: Fix error code in kvm_vgic_create() Date: Fri, 21 Nov 2014 17:21:07 +0000 Message-Id: <1416590467-6044-4-git-send-email-marc.zyngier@arm.com> X-Mailer: git-send-email 2.1.3 In-Reply-To: <1416590467-6044-1-git-send-email-marc.zyngier@arm.com> References: <1416590467-6044-1-git-send-email-marc.zyngier@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20141121_092147_234647_FCE78C1D X-CRM114-Status: GOOD ( 10.96 ) X-Spam-Score: -0.0 (/) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record Cc: Mark Rutland , kvm@vger.kernel.org, Ard Biesheuvel , Gleb Natapov , Andre Przywara , Christoffer Dall , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: marc.zyngier@arm.com X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.47 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 From: Christoffer Dall If we detect another vCPU is running we just exit and return 0 as if we succesfully created the VGIC, but the VGIC wouldn't actual be created. This shouldn't break in-kernel behavior because the kernel will not observe the failed the attempt to create the VGIC, but userspace could be rightfully confused. Cc: Andre Przywara Signed-off-by: Christoffer Dall Signed-off-by: Marc Zyngier --- virt/kvm/arm/vgic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c index 3aaca49..aacdb59 100644 --- a/virt/kvm/arm/vgic.c +++ b/virt/kvm/arm/vgic.c @@ -1933,7 +1933,7 @@ out: int kvm_vgic_create(struct kvm *kvm) { - int i, vcpu_lock_idx = -1, ret = 0; + int i, vcpu_lock_idx = -1, ret; struct kvm_vcpu *vcpu; mutex_lock(&kvm->lock); @@ -1948,6 +1948,7 @@ int kvm_vgic_create(struct kvm *kvm) * vcpu->mutex. By grabbing the vcpu->mutex of all VCPUs we ensure * that no other VCPUs are run while we create the vgic. */ + ret = -EBUSY; kvm_for_each_vcpu(i, vcpu, kvm) { if (!mutex_trylock(&vcpu->mutex)) goto out_unlock; @@ -1955,11 +1956,10 @@ int kvm_vgic_create(struct kvm *kvm) } kvm_for_each_vcpu(i, vcpu, kvm) { - if (vcpu->arch.has_run_once) { - ret = -EBUSY; + if (vcpu->arch.has_run_once) goto out_unlock; - } } + ret = 0; spin_lock_init(&kvm->arch.vgic.lock); kvm->arch.vgic.in_kernel = true;