From patchwork Wed Aug 5 10:53:57 2015
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Pavel Fedin
X-Patchwork-Id: 6948181
Return-Path:
X-Original-To: patchwork-kvm@patchwork.kernel.org
Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org
Received: from mail.kernel.org (mail.kernel.org [198.145.29.136])
by patchwork2.web.kernel.org (Postfix) with ESMTP id 8C8FDC05AE
for ;
Wed, 5 Aug 2015 10:54:22 +0000 (UTC)
Received: from mail.kernel.org (localhost [127.0.0.1])
by mail.kernel.org (Postfix) with ESMTP id B15B920425
for ;
Wed, 5 Aug 2015 10:54:21 +0000 (UTC)
Received: from vger.kernel.org (vger.kernel.org [209.132.180.67])
by mail.kernel.org (Postfix) with ESMTP id A352D20435
for ;
Wed, 5 Aug 2015 10:54:20 +0000 (UTC)
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
id S1752608AbbHEKyN (ORCPT
);
Wed, 5 Aug 2015 06:54:13 -0400
Received: from mailout1.w1.samsung.com ([210.118.77.11]:51906 "EHLO
mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
with ESMTP id S1752524AbbHEKyK (ORCPT );
Wed, 5 Aug 2015 06:54:10 -0400
Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244])
by mailout1.w1.samsung.com
(Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5
2014)) with ESMTP id <0NSL002X7VM8A910@mailout1.w1.samsung.com> for
kvm@vger.kernel.org; Wed, 05 Aug 2015 11:54:08 +0100 (BST)
X-AuditID: cbfec7f4-f79c56d0000012ee-59-55c1eb4fc78e
Received: from eusync4.samsung.com ( [203.254.199.214])
by eucpsbgm1.samsung.com (EUCPMTA) with SMTP id 85.15.04846.F4BE1C55;
Wed, 5 Aug 2015 11:54:07 +0100 (BST)
Received: from fedinw7x64.rnd.samsung.ru ([106.109.131.169])
by eusync4.samsung.com
(Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5
2014)) with ESMTPA id <0NSL00MNOVLZXU10@eusync4.samsung.com>; Wed,
05 Aug 2015 11:54:07 +0100 (BST)
From: Pavel Fedin
To: kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org
Cc: Christoffer Dall ,
Marc Zyngier
Subject: [PATCH v3 1/3] Fix NULL pointer dereference if KVM is used without
in-kernel irqchip
Date: Wed, 05 Aug 2015 13:53:57 +0300
Message-id:
<34464c9cb7c603a22bb6849b78575ee286368936.1438770954.git.p.fedin@samsung.com>
X-Mailer: git-send-email 2.4.4
In-reply-to:
References:
In-reply-to:
References:
X-Brightmail-Tracker:
H4sIAAAAAAAAA+NgFprGLMWRmVeSWpSXmKPExsVy+t/xa7r+rw+GGqzdZW3x4vU/Ros5Uwst
Pp46zm7x984/NgcWjzXz1jB63Lm2h83j/KY1zB6fN8kFsERx2aSk5mSWpRbp2yVwZSxe9Z6p
4CpHxeLFc1kaGOeydzFyckgImEicuTGBBcIWk7hwbz1bFyMXh5DAUkaJX8eWMUE4bUwSvy9c
ZgapYhNQlzj99QNYh4iAqcTzf29Zuxg5OJgFIiWez2AFCQsLxEs82LyMEcRmEVCVONx9lgnE
5hWIlniw9yYbxDI5iSvXp4PZnALmEme+nQSzhQTMJJa/W8eOS3wCI/8CRoZVjKKppckFxUnp
uYZ6xYm5xaV56XrJ+bmbGCGh9WUH4+JjVocYBTgYlXh4PzgfDBViTSwrrsw9xCjBwawkwpux
HSjEm5JYWZValB9fVJqTWnyIUZqDRUmcd+6u9yFCAumJJanZqakFqUUwWSYOTqkGRss5C5LV
s/2j7ZeZCwhUVYe6CdY6ZHj0HCj8dC825fDhd7ZBa8UKGnm5IiV5ns5Yphw7Za2qVgirZyRj
UpqH6mPDzSqhTl+OiWqYWoafE9txhnumSOeRR8uuq6gs5XFt1Wv4y9/57Mp79umPD6RM6PGa
MDvRt00+/c7ER/knuw/VLjR100pUYinOSDTUYi4qTgQAO5JKICkCAAA=
Sender: kvm-owner@vger.kernel.org
Precedence: bulk
List-ID:
X-Mailing-List: kvm@vger.kernel.org
X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI,
RP_MATCHES_RCVD,
UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org
X-Virus-Scanned: ClamAV using ClamSMTP
Makes qemu working again with kernel-irqchip=off option, allowing to use
GIC emulation in userspace.
Previously kvm_vgic_map_resources() used to include irqchip_in_kernel()
check, and vgic_v2_map_resources() still has it, but now vm_ops are not
initialized before kvm_vgic_create(). Therefore kvm_vgic_map_resources()
call without vGIC instantiation attempts to call
vm_ops.map_resources == NULL
The bug was introduced in b26e5fdac43c1b7c394502917e42e3b91f3aa1a3
Signed-off-by: Pavel Fedin
---
arch/arm/kvm/arm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index 483b5d1..199a50a 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -449,7 +449,7 @@ static int kvm_vcpu_first_run_init(struct kvm_vcpu *vcpu)
* Map the VGIC hardware resources before running a vcpu the first
* time on this VM.
*/
- if (unlikely(!vgic_ready(kvm))) {
+ if (unlikely(irqchip_in_kernel(kvm) && !vgic_ready(kvm))) {
ret = kvm_vgic_map_resources(kvm);
if (ret)
return ret;