From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020122.outbound.protection.outlook.com [52.101.84.122]) by lore.virtuozzo.com (Postfix) with ESMTPS id 2A8A480C27 for ; Fri, 23 Oct 2026 16:54:40 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RlVHiViFx5MWDXSVpFA+Aj1OAiohXJB3XYHuV56ysZgKZ0rIIGAlj8YEhYPKgz9z+ANVWERUvrC1k6zzOLPbr9DhEC0ByBS2T0MKf7jJI3yAwsSeT02SEFPueiXcACnXrtND1bIcSFd0RPOY4TQ+TpUAYtCukpWp5Gcarbfa03F4TqXdzWoDAi7m4wlb11sJzRMRsX6J2R3kgKYi9Itw4CB38ofPqS3Sv9H0KHe8HMMs5+D7xHRoM+2YfEkhu4zpV+zfEeGxtVa7UF0AXjpYI01FIW7D2rUg2Gu8y49kFi3JYA+/r5ofYWEw0uEVqKK8CnEQGnGD5qbZmr2xgYVPMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2UBFhClQyoP5TLYURVhBzGWOL09my4ahEchsY5coW6A=; b=bFtEYHc5bTlAVVFleGNK6cy8Z3KVSC7R5urKfFQrMfOUnnZ7rwZYJbCnvIFOCmjoabsiXzIW0hMNbgy4GczhBpPqxA1zTflcMHeUHWYDK4NvAxq/CyqZnpHyDxe3sVSAYbeWQB3EHi5WB4o8ZJDPELys234E4rdL8eBgdDU2fWIfsOoZvhrmAkZF+fjUv15I3hlE7J5V5G5Fwt5h4V1ElHf2y5tA9Jexv25+zlXkb1qjJYDUM5w68qXvla/lny1MrBjRsfxHJDqhfZcPQNT8xHWIWfvuH1dXQnvRAdMauwlsSXgzrZN7bxEm0ek/S+rQXvUyrDG61ZGIu27NRIAjiA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2UBFhClQyoP5TLYURVhBzGWOL09my4ahEchsY5coW6A=; b=o74Kc+TTGnMJo8Ig+mrLAqv1Ehj20C+bgMAzkcW8xtQtK1hfAR0Tch9ouUib0I3o6kYvJ4VNi65AV6YYMm61WDmajzBkfM1QJ2n9ar6IJAzha6XYn4QoGgq6ScqdAOMuDNziroHFI1MF/AZVrDjy5poKXdMtYD91AcKo+/dqNZm1BLp+Px8hqTn6ZzX6TfqxICR5n3554+Ki5YQ9mItCHoKGv0kif2YrDQSTShL+nzC12TQAMz3636d/GS1UeBZaTXuH2WnBwFY8mOD+ID2hgNe23FLS+YbAkvBucAfSYK2gI6YzYsvcfHRaYJfUvjaf0HlOr8bsUz7arqFfxCydIQ== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by AM9PR08MB5955.eurprd08.prod.outlook.com (2603:10a6:20b:2df::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.19; Fri, 23 Oct 2026 16:54:36 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%7]) with mapi id 15.21.0546.017; Fri, 23 Oct 2026 16:54:35 +0000 From: Andrey Drobyshev Date: Fri, 23 Oct 2026 19:53:46 +0300 Subject: [PATCH QEMU HCI-8.1 v5 09/36] hw/vfio: Fix liveness check in vfio_connect_kvm_msi_virq() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20261023-vfio_v1-v5-9-ba0bf3c6d122@virtuozzo.com> References: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> In-Reply-To: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR0902CA0027.eurprd09.prod.outlook.com (2603:10a6:802:1::16) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AM9PR08MB5955:EE_ X-MS-Office365-Filtering-Correlation-Id: a1da0086-33be-4a83-aabd-08df31264b31 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|366016|52116014|376014|38350700014|260925021911599003|260925022911599003|260925021311599003|56012099006|261021123027099003|261022075727099003|261009223027099003|261021121427099003|10067099003|22082099003|18002099003|5113699003; X-Microsoft-Antispam-Message-Info: WghP17L1Gco8vB2wdJ3oI7xe0/ivWjmqbQmrPBMml7tHOH3aZMv1WsS44AL09dm3O6fr41pqYn4dkTw5wgpKaoBIy3zphCpqQL/B4g6JWESLaH2xHvvNrVGt+QF7FRPBlJ50UoM07/quUNVRcKRPYYHbUOnEI1c0LKny3kSU2wum+FxT8nBPlDz2wVy9tfhL73qLlVo9KwnpQ8a/AJUSnrsdTXT270upJNmJPIC9Toi8nM53ADJ6EtNv1UuOUlvmI7p8bhkbEwjGV63dIYPudXvTd6MGuW3lV6nNL1sLPGWAyJZ7sRc/lBLLeP/Wt8KB+nZngAj9StC3j10aYsiN53VTwZUVBHkmPbrPlSxocy08/idOOg8JqSSYDlcN+7x1tk4/jAT21FNv2y5mbptRbyn+lxa72ghaY/c7Ws4sTaP198q4kv5sf84QupeIRoLq4NDlf3LwUxW5tLFoxJ4oYH5ALNSqCNAcY0zQxYVUD32zFbm3aWCLaC1a+xKfI8oU0gcMevWB9BAh/Pge5qvDMco0ojjJLvn2RCOPVNpKtBT3rmGw6nWqG2K1ufedXhBuYMvQ8oR6lQ3S7Uc96b/w3o6219MoUlx7oFDReF17ebv1f7ECRIZJnOPwWo59eK7x7MuksWdIz7LoXoZ8m2g/mfte/Mxg1HkNvYvK9YgQbtw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB10656.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(366016)(52116014)(376014)(38350700014)(260925021911599003)(260925022911599003)(260925021311599003)(56012099006)(261021123027099003)(261022075727099003)(261009223027099003)(261021121427099003)(10067099003)(22082099003)(18002099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZUIwSWs2c3Y2UFROUG84TVlOUkZpcUhDTjc5QUhiZzNCalNocVdLUnFLdVI0?= =?utf-8?B?VVRIZDB4MnpaOTZmMnhNZ1cvNDJidmxxdlExN2dReFJuTlpEbEU5MFgyVzFR?= =?utf-8?B?aTN5dXZsd1M3NkgxdDJDY2NMYmMwTUdRbGxqRVR3c1lOc2dHcElCQVJjdzdR?= =?utf-8?B?c2JUVStsZlFzamphOHhKaXcvVnNhdHVaRi9sVFpoeWx4UWVnV1VuMys0T1NW?= =?utf-8?B?WU9VbVc0b25icVluZmV3Tm4zeWdIcEJjQm9qRzRJQnFVc2tCS0FEd0FXdFNo?= =?utf-8?B?T1VqZUxUUG53aVZ1Y09Qd3hnYVNxTm9lWmIyajNleWxhTU56TVQ4N2FBemNE?= =?utf-8?B?bm4yRVdValBMMjU3SVE5OHBSZXhWWXJxSnIwSTk2cExLQzViZUtvSnR6SkZj?= =?utf-8?B?YWc4cCsvaDZIVjYvVU9qbTFYMFptYm53MlU4U1BvRHFKR2pFWm5YMDlZcVBk?= =?utf-8?B?ZHpTcGh6ZmZsd3QxbHhqeVluL0g0aXlBWnZMRk9kMW9EQzJXMWxrN0pJZVd3?= =?utf-8?B?MjZEOEVyZjNxOVcxeGV2QVRweTVOS0RtaFBELzU1Z3Y0SGYvMUFXdUhELzVv?= =?utf-8?B?MXc1Qi8xTVBJODhzRmJDTHVYTk1nSGlUSmpRUzcxOGFFZDI3UEJPaWZLT3cy?= =?utf-8?B?Y29XNjJ0WDZiN2wzRkh4My81TkYzS1l1UHZZNVVFcTVMWjFqakVQTWYxb2k1?= =?utf-8?B?RzE0Y1lNVFBlc2xrZ1dlRWRMWWF4VjJ3WmZtN1lpM3E1Yk1QVVloeDZCeUFG?= =?utf-8?B?K2QwQm1nOGVxcGM1bjhZSW9Bd25JY1owNXlYcTMzNjZPYmR5VEhZTVJydFo3?= =?utf-8?B?N3o4Q0ZaYVFQOFZJY3U2WkgxOGNHN0JlSm11VlZVKzBzZDJDWWtENjdDUjNN?= =?utf-8?B?N1NqVFNKSnQ3ZFIvTmlJR2xSZG5WeTZjdElCVzNPZzRQOFdOWW9JcmJzTExZ?= =?utf-8?B?QmhvL0YvM3hjOElUaDBiRWFWZjdjTUQySXpDOFlBZ1dtVkNjL1UrakFIa29K?= =?utf-8?B?ejVGejJ3TzZWb3NzRWxhNlVrOTFERWdyN0xQcGpibVJtcFZCa05aMkQwc1JX?= =?utf-8?B?R2o5Kzh1ZEk4cmJyZlJYOUhKUkI0ck1ZMVltdk5YZ0wvaXdGdkNQMFJyRTg0?= =?utf-8?B?c0gwVjgzdVo3enVoTk9FK3pDZ2FXbWx1Mk1NL0FBVEhTcUUvcHVZTk1ZNWpI?= =?utf-8?B?VlhDNWk4M2NtQTdvRHFOVVRTYmcvVDdSZE1OS0RDeWlSZEM0cFErZzRzejBT?= =?utf-8?B?NVgzNzVDNWNQQUhyWTRFYyt2YlMrRCtzQndrdU1tTVNqU1VKSUNGZEFNNnZ4?= =?utf-8?B?ZkQwV0cxLzZaY3BLMTNVSTgyTkh2UGFzcmN6bDRCUnI5ckQ4RmlNRU1lSkRx?= =?utf-8?B?MHB5RmgrYjF6WTBYbWk5bUpQY2VyNGlhSkR0RE16SjJOc3dPc25DcHhIdi9a?= =?utf-8?B?bWJTMm91bTJtZUJsS1NrR2RlNXRCcmlFM2pmNXBZM3NFSGQ4TjRMVkpaRlc5?= =?utf-8?B?NXY2aE9UbzYzS28xczFiT2x5QVREWGI4TEExR3ZjV3psa2UrL0s0ajdJMnFY?= =?utf-8?B?YzJscVN2eHV0TjYxM0hhbTVuSVJzL05vQjZpaGFNVjN0a09FS2pjZ2pHU2Nz?= =?utf-8?B?eEZhUE1VMHYvMHI0Y3JOdHljWXorQi9IbWRibWlsQ1ZBdHgwOUNIR1ZtZ2M1?= =?utf-8?B?d0haMkh6WklqMXRRR29BNUllaW1lbjgxUlN6aFpLS3VxQThZQ3BlblIyUDdW?= =?utf-8?B?ZFpvYXJXSTAvZkgwdnE1WEF6bDB6NkhBQldiMGRMcHVGcVlQdXhpSjVuL0xn?= =?utf-8?B?MDlvd0V1MzBzSEd3bW1xZjRjczljQS9KUGM4L0paUTFKWkI5QWpRQS9GN0Jl?= =?utf-8?B?TGhpTzdZQy9QWXUvQWZQbnk5UWhHNE1mVmc2SFBEbjl0amJiMHBFRG9hNU1Q?= =?utf-8?B?S2lFRTh2V2JJM1FaRlI5SzdCVzJ5bWFiZTlwaWhLWEladTNGT2dKRElpU3Vu?= =?utf-8?B?SXRhK0ZUQS9RTTdybHdPbUJ1RDdwUjVqTnhjV2Jpa25WZnZTeklucHYvVUE0?= =?utf-8?B?dkdRZ2E1UXdwWEs1eGtQLzUraUhvKzVSNmxnT2M2UGh0dTdOcDB1bjkyam54?= =?utf-8?B?QVl5QkhkMXI3SDlFV2J3dExpWHJQVTBDaDBnSERPdmUvSVFlRGltM1BmNnNR?= =?utf-8?B?YVZXaXd3dlNoSDcrUDFwa3FLN1AvQTNMSmJ6a3MzUFp3VXFzRFhmSDNVZWxv?= =?utf-8?B?akFTbHMwTC96bmQzUzRDNTFGY0FEVFFYaVdTY2pvVURKbWc0TndxV0dwMFhD?= =?utf-8?B?R3J1aGZBQm5LWkJZYTNsT1Rmb21nM2xPbkN2bXE1eWpwb0Mxelp3T1crV0pa?= =?utf-8?Q?sg8m40kO+XfliCtg=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1da0086-33be-4a83-aabd-08df31264b31 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2026 16:54:25.5761 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ro71h6QkkrodZWp9Y9feRbZ1E4zQmGcoOkPtfjAfYiJHPPmqGZ+HrnQoeLrF1dqa4hJxgjxUxfHxZy6QmT2aQ4aDX2CTlgRhU00mPOW1veE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB5955 From: "Tycho Andersen (AMD)" While working on savevm/loadvm for a new vfio device, I encountered the crash below. Since vfio_connect_kvm_msi_virq() didn't check the ->use flag for the vector, it would pass an unused vector down to vfio_cpr_load_vector_fd() which would crash. Fix this by checking the ->use flag along with the virq number to detect whether a vector is valid or not. Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault. 0x0000555555a891ef in vfio_cpr_load_vector_fd (vdev=vdev@entry=0x0, name=name@entry=0x555555eeb27e "kvm_interrupt", nr=nr@entry=1) at ../hw/vfio/cpr.c:44 44 g_autofree char *fdname = STRDUP_VECTOR_FD_NAME(vdev, name); (gdb) bt (vdev=vdev@entry=0x0, name=name@entry=0x555555eeb27e "kvm_interrupt", nr=nr@entry=1) at ../hw/vfio/cpr.c:44 (vdev=0x0, e=e@entry=0x5555586971b4, name=name@entry=0x555555eeb27e "kvm_interrupt", nr=nr@entry=1, errp=errp@entry=0x0) at ../hw/vfio/pci.c:79 at ../hw/vfio/pci.c:601 at ../hw/vfio/pci.c:597 at ../hw/vfio/pci.c:3088 at ../hw/vfio/migration.c:278 (f=f@entry=0x5555574a43d0, se=se@entry=0x5555591edd40, errp=errp@entry=0x7fffffffe130) at ../migration/savevm.c:971 (f=f@entry=0x5555574a43d0, type=type@entry=4 '\004', errp=errp@entry=0x7fffffffe130) at ../migration/savevm.c:2654 (f=f@entry=0x5555574a43d0, mis=mis@entry=0x5555571de5a0, errp=0x7fffffffe130, errp@entry=0x555557157c10 ) at ../migration/savevm.c:2973 (f=f@entry=0x5555574a43d0, errp=errp@entry=0x555557157c10 ) at ../migration/savevm.c:3058 (name=0x7fffffffecc9 "foo", vmstate=vmstate@entry=0x0, has_devices=has_devices@entry=false, devices=devices@entry=0x0, errp=errp@entry=0x555557157c10 ) at ../migration/savevm.c:3452 andrey.drobyshev: This commit is cherry-picked as-is, with no modifications, from the upstream commit f498c21b3595. Fixes: 30edcb4d4e7a ("vfio-pci: preserve MSI") Signed-off-by: Tycho Andersen (AMD) Reviewed-by: Cédric Le Goater Link: https://lore.kernel.org/qemu-devel/20260727150038.2684512-1-tycho@kernel.org Signed-off-by: Cédric Le Goater --- hw/vfio/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index fd73a0fdf87..5e281b2e1d9 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -589,7 +589,7 @@ static void vfio_connect_kvm_msi_virq(VFIOMSIVector *vector, int nr) { const char *name = "kvm_interrupt"; - if (vector->virq < 0) { + if (!vector->use || vector->virq < 0) { return; } -- 2.47.1