From patchwork Tue Jul 3 21:26:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoffer Dall X-Patchwork-Id: 10505251 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 8820D60225 for ; Tue, 3 Jul 2018 21:26:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 743BA289DD for ; Tue, 3 Jul 2018 21:26:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6530E289FF; Tue, 3 Jul 2018 21:26:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 054AF289DD for ; Tue, 3 Jul 2018 21:26:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=RkqBhhfKRnIxiZbBzHdfb9pSczaZgYVg+31ot0Tg5tg=; b=TKSab4yAQ3RYcJ WQE1iif2EEWgR7O9dZrMhZpD4uR2+rvpC1WfaWipFQ5ldXkv93i1jXUQbb1eCkCZqfq2r0OVV5m8h +/g06Cq5ODvKIii0ODTl5XkLwBMzAxMDCtPeFcBBqnb68T6h8ER/UfOCE58YVwLh8Eq6iYwYXHdDe /5nGn8R21SE6Bdt7lieE3qP+wij2RhMHM4qYQlqXOxuFRFMdeDS4TcV+xeyN4D7lcXp68xiM6BAM+ LZwAfCDawVNASmIglCKBCLuocRYebOk5wEISZsCJmHpLNYea17qvBO+rPv2VNviCOYbHZRaEsJPiD hCzfSO3+wKhphYtX7CMQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1faSor-0005Dc-K4; Tue, 03 Jul 2018 21:26:41 +0000 Received: from mail-am5eur03hn0221.outbound.protection.outlook.com ([104.47.8.221] helo=EUR03-AM5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1faSon-0005BI-Fz for linux-arm-kernel@lists.infradead.org; Tue, 03 Jul 2018 21:26:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hPikmC9brjhL/9FSbytLqvlCt1FTPCTiCAurtESwJ+o=; b=AC8+bo3i6X8wb3FuSLqlmu2fOI3AmmoAc1yspJBEqdl6Jq07whjEZeWoRWdlt2eBM00XAkH/PTwwOqx82nri+h86jd/TbAx4YkBTZaaU1MbQQH1yu2sm5JsS+degqCV737E9k5cFKeOZJTnjQE7O9BbtlSJxf/6yLEZjWQ49/ik= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Christoffer.Dall@arm.com; Received: from localhost (217.140.96.140) by DB6PR0801MB2040.eurprd08.prod.outlook.com (2603:10a6:4:76::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.26; Tue, 3 Jul 2018 21:26:22 +0000 From: Christoffer Dall To: kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Subject: [PATCH] KVM: arm/arm64: Fix vgic init race Date: Tue, 3 Jul 2018 23:26:15 +0200 Message-Id: <1530653175-11999-1-git-send-email-christoffer.dall@arm.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [217.140.96.140] X-ClientProxiedBy: LO2P265CA0040.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:61::28) To DB6PR0801MB2040.eurprd08.prod.outlook.com (2603:10a6:4:76::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5f43f3a1-4825-42bf-ba66-08d5e12ba03d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:DB6PR0801MB2040; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2040; 3:ydB+Bi6t/WV1oSwzfYrR+EMfO0OfDMw4Ght73xBXmviG481nba30g1vtMYG1dtVYD75fe35vnaGiRyjbfs0kNYvbpqjXUXlpdB+uMSCkbVenAH5j4NPk1M9Z7JqteutA9I/Spwve8CFaXycqBDuEig1i6aXG9/6x+9W2QM0PJou6+/ctFOYFrRZKKqLBzOkM8L6cWYepgpgbbfE0aFjS2nKanIFDO8QBCxQSLG6CQ02Rn8XK0PBpIHOKMSjFQ3yg; 25:ttk7Lii5U24ctIdcuMFBTCVLNpY2bNnBCquGIAtUMTJFMz+ltJgY4yvW2mVAqw0qTlUu4BNsXpv5x+M5vA0vj9rRJAFhVPOh4hqEKc8fBPq/41oHcpu4XsoTTZe4hRCPLYRuRjWbas31AcuVw34rBz7cMQbW5mz1zqI9VVfunH9bltuOXoCYcZ0HNhwfZ1QCYGOvOkom7bJLtTWFejI8Aud4bUmtm4HnMTtNJY0cil43j9BKWiQYEGP2f/Rj4elJlySm1ErC0Ha/Zy/6HuX1LokQGw2TGHuWdxjBjAgaRFvRDFTVXUGIe3/fUHbdgChKiCX6qziIeVg72+DJvno+oA==; 31:egKSNJqRylVZltjpyVo/OvndTM4jyi3f7FzlODVZiOIXTVS6WOy8Plq94hcNWJUXj1DTycI0AsAUU+/71ZE9gsxLrZvatyKkpNdj3M+cx7QpKf6Gx95Rb2VoHX9vP20wxs7zJ2BAxBtxetK5d9c2zcss8sa2F5mibUb4TVzy+ydp6IUrG2vaZ5BRQ6gp94BVy1V5CatTjjBlS8B3jWRI0bN+/ndf5nzGV46nrJeticU= X-MS-TrafficTypeDiagnostic: DB6PR0801MB2040: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2040; 20:QpRv8173kTBc95v56K54zD2XLUf0so2eAwcKRhsD5Q/XdkZb+gAYCCWDX5xlX9o/c/DTxu4hgcsBSSChfPcUeE6PRzASuQViVQ4ZH4M/gQ7wRr7TvnSuYfHseLQtlZj+gksi0dIFluyyW+heMyDtae6J+PAlD9N++WQ0fepgcx5hd173c5teXr1Uw6sEExbTWE5YJZM498AS9A/n9oRmmwn7KWZ6ZkaRXCs5G8awSPda5Nf2ha23U8OfDLadhgQAGS5ewQtF6fzvkHV8bEWwbpiGPMaBsElVfNvvG+lacKOciCrdQ4bnZJAfpXfwiX6xEMifCHtIpxlnqbbdzFih5H/qy/KvG5u+01bU8M8FhfsPcyPwilQrq0vUAIHhwlwVvIFZ3/7qMoXAmegw9XGJzu2j0H/FaEw5ddHdhTDwNbs+6gqa0U7mOE5GVrSgI0kk7hDF0ogqK5gDkYiE3pV9NvV4o+PSMaItyqo8jkc8LtQ8l6jrUwxO/szlW7ki1N7f; 4:DpAIGAaCwcbjsqCpza32TkqcD/lkyWT9FZBW+yBbM5wB86WUoTTmPpkGN6xNGt4ziwx7DPJ/Wj5MXA3SV5mS4eH1x/MmoQ2AP0VW7lFPvZpefByg3MM+9VYJmWghv4DUyMRTL1+BbTCqEzKCsLTbeE8nZMHiSPpsG0SNI/vW0+mSedVD8kIh8KG/THhBOSKNthAiX2+N1rcmtm3XWZaummYFocXAZMZ2udfgj6WJZpXRWkgSc2bATqyGpte0PJJl9pOFczbROXeYHgUcJOLMCFuaTTbUMqSqfUng0ARXLt9rk2+FtrlMM6CfEzsSN6FdP9h/V5z8E9Lvyx56KcHsSvYfUfLVsNiX8IBLr3B+3i12MUhEibkj4cffwy5oNpd7 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917)(209352067349851)(223705240517415); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:DB6PR0801MB2040; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0801MB2040; X-Forefront-PRVS: 0722981D2A X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(6069001)(346002)(39860400002)(136003)(376002)(366004)(396003)(40434004)(199004)(189003)(50466002)(44832011)(2906002)(68736007)(2171002)(52116002)(53936002)(26005)(25786009)(51416003)(97736004)(16526019)(186003)(47776003)(6496006)(50226002)(72206003)(386003)(5024004)(48376002)(478600001)(6486002)(81156014)(316002)(81166006)(6116002)(305945005)(8676002)(6666003)(76506005)(8746002)(8936002)(54906003)(86362001)(3846002)(575784001)(7736002)(4326008)(106356001)(486006)(476003)(2616005)(14444005)(36756003)(1857600001)(105586002)(956004)(5660300001)(66066001)(23200700001); DIR:OUT; SFP:1501; SCL:5; SRVR:DB6PR0801MB2040; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0801MB2040; 23:aZFydFvNDCG8ej0OtBfeH13D/qNwPuiQugFgqhY?= =?us-ascii?Q?6cg/XiYEdUR8cu04J69Ym4f+lQJOmcGcGZwFTdw/PB3PsVDE3/6srZTFhXCt?= =?us-ascii?Q?Sruzew32obXeczDEMzV8XkWb8Rhx6Rdn+QYpcmWj4eYZTorDVvsNsniJYC1X?= =?us-ascii?Q?5xBXkqgQuwZ3RBEe70fZYTPg7/LD03T9uisU7bMZenpk4Gf+IPsg8wEQcsTo?= =?us-ascii?Q?i1b70XzlDiV3KtAPbY10TPFPoPEaCoyVYaCogAps6BKlACmceXop40VoqJ/G?= =?us-ascii?Q?R/70D4nTGjkV2A1lgGA32ETauxabMIt1lDaFdXezWdV+AhR9r+9/rrEQhP2/?= =?us-ascii?Q?aP2U5FCscDQ9nn4Ovpf7aaPq+U6O71gUU4prXsPSN9GFGsEgr/zFIfXhBeH2?= =?us-ascii?Q?YW6Sty/m2alhjnigIb9wWZZFZyIKYpT9RqosM8HCRq+cJCMZ6ptMy62zd3cd?= =?us-ascii?Q?elIWCxgfD/ezxzWkxHlc8hy1gciZDd6GoUS68aC3gTPwjGwfASLduFkNVXfH?= =?us-ascii?Q?nTitEhxJ0adMoGCQIWx1lBPFJLKhxjnQrlSN5Y+o3uSE5MywKRJi44Bf8+i6?= =?us-ascii?Q?Bdnw/OFOVVNF30MJyhpaFL3wK5o0UkG5gwtreBSn09XcLbiHQnUizUzY5Rry?= =?us-ascii?Q?ol2RgRXqPwYfp1dJKpenFyEhLLZJo32BRfRxgLbMh/YIPJmpaT04+F6LocR/?= =?us-ascii?Q?5Sa+3bvjVRMEfGg/9U5eNHXQLfXN9zbJr6xm96xusTwyqs6xKvePKtMAtywH?= =?us-ascii?Q?hdZAkeaYCNhu9eiG/PgvYaNxNpyd5wg91UDt+P+d+WexBnQiq31xvhGsZlFK?= =?us-ascii?Q?Rc1H2o3IPxlqJnKBkcB1e111OtoBmxNEHazlZyX76Lhro0g/aMIAbMxUIzoH?= =?us-ascii?Q?ORzlVuUrsv4BWZXKsa4Yydw8Ct8haaAhZoH5LOWyYmtZU//eABlZb1fK42Kv?= =?us-ascii?Q?Erdppn3WlbHYSucbYmleKQUv5G49jvaKGbrStBBRzh3zq71e3vVhyl6BUyFi?= =?us-ascii?Q?MKfQgF+zmT4LigvjLlO0vsh5eWDMibtDW0yb6AbnTumwEz+hDo4QOgz4JEFK?= =?us-ascii?Q?ZM183TmP6vASJCsTPby+vj9mIgsRWhnsnTBfMoRXunskM+cj+l+AMsY5oDVi?= =?us-ascii?Q?7ocDyJ+gFaPOYodcPQtDMSF9gdwEPmuwy+7p1W0Qrtoy/CyU5kvfWY0e/QTC?= =?us-ascii?Q?WO7ZYe0bl47Zd33ALf1fl9hWcrcLxzjMvB4lLSHdwij799yxRx+NRGysfyjh?= =?us-ascii?Q?Q5RthLkC/dfXh1q+wTZvUycmmA7iZ7XM/gb92Am5zedB7hu9I5o1M3LhnmWk?= =?us-ascii?Q?BN2wSWxflOp7oqyW4HvmG1UZucybvy1wUV2hLrYfMup5SVz7Zx2+0Mf7thhz?= =?us-ascii?Q?PTmM6dUVePnGVq8zXV6YENcyzRt8=3D?= X-Microsoft-Antispam-Message-Info: XNN0UDkIf8gGnHZ+ncEhis5OPkHel7ALnZJn4BSj/kpkNmnKZvlt/Da2KSM8EvvLe3Y32MnD5++30H9sA/ZV1KaHn8XZkbLjV/pJbdNHA4wNWaoWllxiMhRl3QNfchJPTJUa/tVGCtm6z0W31TIh9LI9SntnyC4KzHB+rWXvu+dGsLHYBKrzMjcRArOZUZa56cbvUiemQ0k0Q9fLpLVzFolNfBUuUGqEE437/xlGBIrYnISK4ifDTZGTg5mXsCb0dBUT5kV044VgT38IuiXk+IjP6+NAJaG5bciG1SN/MRNJulRwobkT6waTxG6hv5gAJPXVC4IHFtEkmD8P4TfxBS653VwUeurShbHCYtN4TGJ+EYt5355yj5NAaIPvbZqYRUSIVGlNwT2FKyaSbCm4PaqWPGsg45aphdRacTRXgOWYUYfBvQgv068mdV9ajzzkifB/W7MzpzmuHSR9doruZZP7ytgvjwrbEAvTsFnYT8G7qfps/K6cd+eKS0RRyjqMJE6UrORPV1X3y5TxmepUbEbc+POfUq7r7OHwUPz1gYjoKCtd39hp11ur4n8r7VQH X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2040; 6:XHGCdDXBzZXZxNCLtQqvAFvodshVGxHUObmtTIQvd0BkyuUnWLC1XiXUEBsGZYOgkFTubet5SN3BtDElLk1ZsQvuSwnZsY1IUGlOh+aKOVlJVCgmfiTLmNmcTW2eyvZKzeedWzNH5iilPbv2SaLF/0HJJy8fOC91ebU2dDQpa0Lz11dCdmfAR5IzUjvPAaa+j2lcB0fHgYudMCsgtZXZmCN8SyKf7N7S92i+dPs+3lgnZwR9SbgSNgGePfM3FeqZ2lYXlmP1Xrd5ARWD93X+EpPvW21DrHhT5fxgFC36a+6VLek4c0F/r2nBAs2r1MJX1ukF1htUrGykyjWbtn2QpCQk31R+POoHcu1kC11yHtZvh7FLYvn/JPZg6kFJpK+1qZJHMC43AbplfX+MZyLRkAbTG1AqwbdMNq+/Bcss9Dtg7z3zkipiicvhowU0Vcsbl9fFmKqkAXZUTC00sLUKmA==; 5:s7nYq/BuxYL3f5g8290PVW7yX4jziUlRiw+flXdLF95xJpxBSsAp8hcqmopSGDU0IxJDLgRLR3LqdOm/es9aFkuMQCqqMPcLxvPzcg2i3mdaOuZr7h/ZfgVKXaSYw+nhtCkcOYEaXOlZsO+P5GAPp8MhSGf5HiZ2TDebtxF+YRU=; 24:Ark5oi7KRI8hZVuuuGRrefbTXfNrnlC6c9pI6zvluGck9S/nUXD0dLO9Pwt7Z5DYrxglrzlV1QvGCWdKEhwE0Q== SpamDiagnosticOutput: 1:22 X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2040; 7:QmDnbBiGRmmlWyp3xSVHN4kYrqTiPuk5YiB0IVqMxR2NwonFW+azElXJiGq7iLzNtiCxSZqFRHx9XXRxhX7chSpUOSOrqYDZJnZeCOBsCAO7Oi7CF2Vg49jNVQi9jASlOm2Y0UC/haa451T49Vk+mOeyEbaM3u6l/+x1m30dvBANb8A1/EkDscgo0IFYCGPF6tbbEZ0R40h1QiZyAj5UhmVIS1b7S9iQLukQCEB2/DGwcrPvYIQwx+qSrIEtvxpV X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2018 21:26:22.9234 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5f43f3a1-4825-42bf-ba66-08d5e12ba03d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB2040 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180703_142637_756436_0E0F0DFA X-CRM114-Status: UNSURE ( 9.97 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marc Zyngier , Eric Auger , Christoffer Dall , kvm@vger.kernel.org, Andre Przywara Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP The vgic_init function can race with kvm_arch_vcpu_create() which does not hold kvm_lock() and we therefore have no synchronization primitives to ensure we're doing the right thing. As the user is trying to initialize or run the VM while at the same time creating more VCPUs, we just have to refuse to initialize the VGIC in this case rather than silently failing with a broken VCPU. Signed-off-by: Christoffer Dall Reviewed-by: Eric Auger --- virt/kvm/arm/vgic/vgic-init.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.7.4 IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. diff --git a/virt/kvm/arm/vgic/vgic-init.c b/virt/kvm/arm/vgic/vgic-init.c index 9406eaf..c0c0b88 100644 --- a/virt/kvm/arm/vgic/vgic-init.c +++ b/virt/kvm/arm/vgic/vgic-init.c @@ -286,6 +286,10 @@ int vgic_init(struct kvm *kvm) if (vgic_initialized(kvm)) return 0; + /* Are we also in the middle of creating a VCPU? */ + if (kvm->created_vcpus != atomic_read(&kvm->online_vcpus)) + return -EBUSY; + /* freeze the number of spis */ if (!dist->nr_spis) dist->nr_spis = VGIC_NR_IRQS_LEGACY - VGIC_NR_PRIVATE_IRQS;