From nobody Tue Feb 10 12:43:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1688028895; cv=none; d=zohomail.com; s=zohoarc; b=L7P2OwG3e6GhEcsBoKDibjk3NyFmwY8zzya2yAs2gBJUAXn7UibVX0yjiNKpayW1t8i5jS6GfiwE8FlaNEU0mpRJQzJO1OiB3/oGafYKOOZ5JLdQndUFJxsL9MwwQ8j5DGrn/A9rI5AabRVyz1Dnnu/y12iAb2iklXlIN+2Gre8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1688028895; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VUTy127T8WJzf0cLNkw2W66XIPeKn6I2JIQvVEw6LSQ=; b=Td79Wf1ajCqaAv+2pdzMCm8m/dlr97cHXJwtK3vbc1QE2Go3cnSxkMZsTZh/CTzDuQHMoKNJGgNNKcOmmreL+vg6ZP+nefnmpjezqG9vpjrWT4etU0TKDC8N+/+/hmZ9qKK6khf0UnanU71R+u8TuL0PAwsgboRk6z0dcu08x98= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1688028895520356.3164079112697; Thu, 29 Jun 2023 01:54:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qEnPM-0002IS-MM; Thu, 29 Jun 2023 04:53:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qEnPK-0002Hv-NI for qemu-devel@nongnu.org; Thu, 29 Jun 2023 04:53:42 -0400 Received: from mga04.intel.com ([192.55.52.120]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qEnPI-0003dp-KB for qemu-devel@nongnu.org; Thu, 29 Jun 2023 04:53:42 -0400 Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2023 01:53:39 -0700 Received: from duan-server-s2600bt.bj.intel.com ([10.240.192.147]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2023 01:53:37 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1688028820; x=1719564820; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cJIPVP01AA7xsD3iUU2rztqJwjACTSIZKHRcfCmA+tw=; b=CSabYyBtWiPASluonNN4ZB2d4Y+XuP8Yp3qJAfBsVDP3Za9AcT5ygn0D E+CJD0FwjMaQDTcM3P+2azc1rguR1mTk62tns5UDG4ebO74UhPKCJ6mSY yYeboas++W4hdMC6iwFwJM8xWLzOrDYehmoKoVr6SMz6zxJSNBeVM/Z4u +kr37ymG5t36kkPbktagTDGN6BGf295Osm0m6AJWMkT1uM9Fi0wAHqYed yy1fhjJ6jJKH5nqbuKUKjyL6SKAzWbbm3FARdQC0I/R6qgjh4PxzJKUxK IIA0lz3VsIwDwy3KHLJMGoLQM0NvFaoCuCceq0hwTbv3+m4kP+qGqCAwV g==; X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="360908850" X-IronPort-AV: E=Sophos;i="6.01,168,1684825200"; d="scan'208";a="360908850" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="720494306" X-IronPort-AV: E=Sophos;i="6.01,168,1684825200"; d="scan'208";a="720494306" From: Zhenzhong Duan To: qemu-devel@nongnu.org Cc: alex.williamson@redhat.com, clg@redhat.com, joao.m.martins@oracle.com, avihaih@nvidia.com, chao.p.peng@intel.com Subject: [PATCH v4 1/5] vfio/pci: Fix a segfault in vfio_realize Date: Thu, 29 Jun 2023 16:40:38 +0800 Message-Id: <20230629084042.86502-2-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230629084042.86502-1-zhenzhong.duan@intel.com> References: <20230629084042.86502-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.120; envelope-from=zhenzhong.duan@intel.com; helo=mga04.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1688028896385100009 Content-Type: text/plain; charset="utf-8" The kvm irqchip notifier is only registered if the device supports INTx, however it's unconditionally removed in vfio realize error path. If the assigned device does not support INTx, this will cause QEMU to crash when vfio realize fails. Change it to conditionally remove the notifier only if the notify hook is setup. Before fix: (qemu) device_add vfio-pci,host=3D81:11.1,id=3Dvfio1,bus=3Droot1,xres=3D1 Connection closed by foreign host. After fix: (qemu) device_add vfio-pci,host=3D81:11.1,id=3Dvfio1,bus=3Droot1,xres=3D1 Error: vfio 0000:81:11.1: xres and yres properties require display=3Don (qemu) Fixes: c5478fea27ac ("vfio/pci: Respond to KVM irqchip change notifier") Signed-off-by: Zhenzhong Duan Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Joao Martins --- hw/vfio/pci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 73e19a04b2bf..48df517f79ee 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3221,7 +3221,9 @@ static void vfio_realize(PCIDevice *pdev, Error **err= p) =20 out_deregister: pci_device_set_intx_routing_notifier(&vdev->pdev, NULL); - kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier); + if (vdev->irqchip_change_notifier.notify) { + kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier); + } out_teardown: vfio_teardown_msi(vdev); vfio_bars_exit(vdev); --=20 2.34.1