From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-1451573-1517181228-2-8829813902656402850 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.001, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES unknown, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='com', MailFrom='org', XOriginatingCountry='US' X-Spam-charsets: plain='iso-8859-1' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1517181228; b=kaxwfPy8Bc994KdMkiKb0TiuFvVJ5avWYgkEKwK8ia1Fomu o+jFN3k3EdUrqINTgYCjZnNUUUpAgTvCYMEKhIpSr6u8er0rlWs+Zx/L3J4nY/RZ FeE7yOmkewJ+Cy5Wn+SAfwNrlZ4g9ZpjrjjM88Ci7Kz5MQcIsKNYz3jeY3DQ1iEP /zDw2MdZZVQs/2FZsfaPv9LcFuEJ/ZCmFkIZU9pqFT+SONEuBT/4e1TA9Zl9HAXQ tvzrPUTZWc4vpPvvGzI4zQn1oPdjCpT3O9h9AQJ2ZNS0UE3ZIrpBr0OwumoPOF4N JtPFx7Mwl20CCPRKQwrBPwjcfzrgSBZ1ZctTvKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :references:in-reply-to:content-type:content-transfer-encoding :mime-version:sender:list-id; s=arctest; t=1517181228; bh=+NaRnt Ak+ECjL+coUorCe2cwjkaXnS0hr13rAcbJv40=; b=kguDDyQnemwV3LT2gUW0e0 TCa3azz5qt4zOAJKk3bzOxL8O8dTJATFpQnq9f67pDkv362dZS4O8e5+nNu7Q89g QYKfM2ij2+bNKEmwMzl7B7yYPz0s6+9ImjafTpiv7HpMKfrJgy0TEbDm9oJhgAe8 c3u48C/iRZIfOiSydvNfKoLat5J6VKpjnEtNHivp0loYc8q6ic+ZUh+D2aPLJahI uKfYGX0uuNAlCiyyAM/e0YjED8Vef8GnlKvFUrdVhv4ydOGnQaFyWpsCmfI+HoFl KK/HEBLGVaRk0hftnJj/9qXsz9aJbARMWOeDg243OIH0tIiy4TIVK8K6uxhW/sFw == ARC-Authentication-Results: i=1; mx5.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=FrAMXO7E x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=reject,has-list-id=yes,d=none) header.from=microsoft.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=microsoft.com header.result=pass header_is_org_domain=yes Authentication-Results: mx5.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=FrAMXO7E x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=reject,has-list-id=yes,d=none) header.from=microsoft.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=microsoft.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753368AbeA1XNN (ORCPT ); Sun, 28 Jan 2018 18:13:13 -0500 Received: from mail-bn3nam01on0125.outbound.protection.outlook.com ([104.47.33.125]:13020 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752712AbeA1W0Y (ORCPT ); Sun, 28 Jan 2018 17:26:24 -0500 From: Sasha Levin To: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" CC: Marc Zyngier , Christoffer Dall , Sasha Levin Subject: [PATCH AUTOSEL for 4.14 030/100] KVM: arm/arm64: Fix spinlock acquisition in vgic_set_owner Thread-Topic: [PATCH AUTOSEL for 4.14 030/100] KVM: arm/arm64: Fix spinlock acquisition in vgic_set_owner Thread-Index: AQHTmIcDnEDa01Siek2RqqnhFCmq3A== Date: Sun, 28 Jan 2018 22:26:17 +0000 Message-ID: <20180128222547.7398-30-alexander.levin@microsoft.com> References: <20180128222547.7398-1-alexander.levin@microsoft.com> In-Reply-To: <20180128222547.7398-1-alexander.levin@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;MW2PR2101MB1004;7:A3vHJRDJsYaftgbI63qU5yH3vQqQ48r5a07jGOVzqRpvf5Yrz4tLQENB0WNpZu7zs0XhHwc1dEzOQNxE2qNqVJtZ36UyzSBIPAD62yqOXaJwm0NwkMwNczB3QmDD04w7ckVVbo7CnyTxVXqaE+lKCuSPTR9SbYDBkTBE9wpuQ1wNUfxCcqPyFGy7bCQqJeDHO0N3Zv7TRItBRXW+pYPMdW1wJJWOLBbRMhgfKki+DaPN94y+RHIFK0dwm1rjmGvT x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI;SCL:-1;SFV:NSPM;SFS:(10019020)(346002)(396003)(376002)(39380400002)(39860400002)(366004)(199004)(189003)(2501003)(6486002)(186003)(110136005)(5660300001)(106356001)(97736004)(68736007)(6512007)(5250100002)(316002)(53936002)(66066001)(99286004)(2950100002)(575784001)(86362001)(54906003)(22452003)(6436002)(26005)(102836004)(59450400001)(25786009)(10090500001)(76176011)(8676002)(10290500003)(14454004)(6506007)(86612001)(8936002)(81156014)(2900100001)(81166006)(1076002)(107886003)(478600001)(3280700002)(2906002)(72206003)(7736002)(305945005)(105586002)(36756003)(3846002)(3660700001)(6116002)(4326008)(22906009)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:MW2PR2101MB1004;H:MW2PR2101MB1034.namprd21.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 5b22441f-1be5-4196-358b-08d5669e2769 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7193020);SRVR:MW2PR2101MB1004; x-ms-traffictypediagnostic: MW2PR2101MB1004: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alexander.Levin@microsoft.com; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(180628864354917)(89211679590171); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(61425038)(6040501)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231101)(944501161)(6055026)(61426038)(61427038)(6041288)(20161123564045)(20161123560045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:MW2PR2101MB1004;BCL:0;PCL:0;RULEID:;SRVR:MW2PR2101MB1004; x-forefront-prvs: 05669A7924 x-microsoft-antispam-message-info: 3tWZfaziQfC38qYYoYFDkn4aSLK1+ZMn5sASLYixi1ZDQRXvfLRZe9qLWy7+yUiCgK5dVq83R7xaI7aEyWQKzA== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b22441f-1be5-4196-358b-08d5669e2769 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jan 2018 22:26:17.6462 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR2101MB1004 Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: 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 --- virt/kvm/arm/vgic/vgic.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/virt/kvm/arm/vgic/vgic.c b/virt/kvm/arm/vgic/vgic.c index fed717e07938..da53c6e7d688 100644 --- 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_vcpu *vcpu, unsi= gned int virt_irq) int kvm_vgic_set_owner(struct kvm_vcpu *vcpu, unsigned int intid, void *ow= ner) { struct vgic_irq *irq; + unsigned long flags; int ret =3D 0; =20 if (!vgic_initialized(vcpu->kvm)) @@ -464,12 +465,12 @@ int kvm_vgic_set_owner(struct kvm_vcpu *vcpu, unsigne= d int intid, void *owner) return -EINVAL; =20 irq =3D vgic_get_irq(vcpu->kvm, vcpu, intid); - spin_lock(&irq->irq_lock); + spin_lock_irqsave(&irq->irq_lock, flags); if (irq->owner && irq->owner !=3D owner) ret =3D -EEXIST; else irq->owner =3D owner; - spin_unlock(&irq->irq_lock); + spin_unlock_irqrestore(&irq->irq_lock, flags); =20 return ret; } --=20 2.11.0