Received: by 10.223.185.116 with SMTP id b49csp1072456wrg; Fri, 23 Feb 2018 11:24:59 -0800 (PST) X-Google-Smtp-Source: AH8x224dfstpjnZptkrXxRggSyb3FekgDQ+UjTNy/XBGXnD7iCAclSbTf7B9VaACCwDdSvt5Qg7i X-Received: by 2002:a17:902:28e3:: with SMTP id f90-v6mr2634042plb.355.1519413898931; Fri, 23 Feb 2018 11:24:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519413898; cv=none; d=google.com; s=arc-20160816; b=VO6cqVNkqVOB2i341YKC5wQlaj80JfYqwIiv0uUEipBv0tZYthy+GmjoERRlfTHZ66 O8Q3kYPmX0zQ3BQDA8AHnvDjvB5iQNYIE0HYOIjAPfBJZJVDvxte4vyrROqNe5B+PEy9 VeuZQcX63knvbr4+2GjJ87OBnawg7QTzvXV8JbQbBVVJlwP2aXaoCCm2bc2xqGxCbrgf 46CazvH6Lsh72NKfj9GV9vna5Jsj3zvuhmUCZJey/sh11BIbQ8PNEmf7zSXSIBSlT2yX Y6mEAO+Wk5tWOznWc0qejkomQj2wDxRsjE9VcxA8Km5m7q+VV8Mt5FMv6lgQ4YmZ8Xlx zvFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=UftxCZgHxG+iw5FHasfhdS5IGrxDubPsvNvsmR0t5X0=; b=a1r6/QfT7UyjWT1hcV92TX5M4ZAVaoa+kbJjQAUeVg3ysMsbaAeJzSVd+HSjXlEZIO 3sJgDGbpyw9go9QlQwWhcoe1tDtaaWxT/1qfJCs0SsoyOvYjdCacnFtpYzJoOqxBrjvK TjaaN5p30HQDU3qUSrmUKKGen+I+lg/dWdL9OgT7rlfotEeBWII8pJ5uLqlm05uIFhJy 3lFk97+JLbXNIDGB7TV39Jw8mYkasvh/Hcz+UL3qGsZFbS4pUfVB5cyPILH7qAPTjen3 jbb6vjQUz0RycyBan6YAtTkSEBmLsp6YeArkwVrKsry1WL7YhlOaMDEnkrrGxDBmoiet tl+Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a61-v6si2158575pla.248.2018.02.23.11.24.44; Fri, 23 Feb 2018 11:24:58 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935356AbeBWSxN (ORCPT + 99 others); Fri, 23 Feb 2018 13:53:13 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:47258 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935345AbeBWSxL (ORCPT ); Fri, 23 Feb 2018 13:53:11 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 91C6F1024; Fri, 23 Feb 2018 18:53:10 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, James Morse , Marc Zyngier , Christoffer Dall , Sasha Levin Subject: [PATCH 4.14 088/159] KVM: arm/arm64: Fix spinlock acquisition in vgic_set_owner Date: Fri, 23 Feb 2018 19:26:36 +0100 Message-Id: <20180223170754.163578815@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180223170743.086611315@linuxfoundation.org> References: <20180223170743.086611315@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Marc Zyngier [ Upstream commit 7465894e90e5a47e0e52aa5f1f708653fc40020f ] vgic_set_owner acquires the irq lock without disabling interrupts, resulting in a lockdep splat (an interrupt could fire and result in the same lock being taken if the same virtual irq is to be injected). In practice, it is almost impossible to trigger this bug, but better safe than sorry. Convert the lock acquisition to a spin_lock_irqsave() and keep lockdep happy. Reported-by: James Morse Signed-off-by: Marc Zyngier Signed-off-by: Christoffer Dall Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- virt/kvm/arm/vgic/vgic.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --- a/virt/kvm/arm/vgic/vgic.c +++ b/virt/kvm/arm/vgic/vgic.c @@ -454,6 +454,7 @@ int kvm_vgic_unmap_phys_irq(struct kvm_v int kvm_vgic_set_owner(struct kvm_vcpu *vcpu, unsigned int intid, void *owner) { struct vgic_irq *irq; + unsigned long flags; int ret = 0; if (!vgic_initialized(vcpu->kvm)) @@ -464,12 +465,12 @@ int kvm_vgic_set_owner(struct kvm_vcpu * return -EINVAL; irq = vgic_get_irq(vcpu->kvm, vcpu, intid); - spin_lock(&irq->irq_lock); + spin_lock_irqsave(&irq->irq_lock, flags); if (irq->owner && irq->owner != owner) ret = -EEXIST; else irq->owner = owner; - spin_unlock(&irq->irq_lock); + spin_unlock_irqrestore(&irq->irq_lock, flags); return ret; }