From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023131.outbound.protection.outlook.com [52.101.72.131]) by lore.virtuozzo.com (Postfix) with ESMTPS id 1692480461 for ; Fri, 16 Oct 2026 15:26:13 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DXbXFS9ZKozHYd0z3ZDsUMsQMjcFm/e9+v9oQkBQkRDei/mZXS66JXDxbMZOVT8SAPCrNE01TgyFUB2QsqkWvoKtGHibsN5dk+jL3G4PjM4+vI9pY/dpODp0Eh144N8bkLU7xWjsstkcgNA9k2tvXcS1EY4GbUwjKfWtAR+39oyoGnaMCjWpJRbG7DGMnb7N5d8cRaOKgunJUzEaYb3Ii8egGIJYD/wxvnh6nzFrSs0l5CmGdgv6PFE6ZE4aMZAZNMKvcI3ANsNjcLCEHLGKqa0HOTE/frHgl37HXnGW6Hd/A+VRxNpiuljKLN8hgkSYTJtl++NM2dw1bC6tojgrtQ== 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=ZuZpFBB0lVNuo9ZoS/VM7+00sDgcm2H/zGxWlX7lS1IlD6OGKLMF/AR66MnyrsH49fkVfPk43RKpKVDHDyAjEayezHeWhDYi9UqftersIOXeGR7/r2xs4nQXAMSPt9mKyTv+vuViN/Wdhw4gRIGG97WNAHWjERcm1gaQWpRyaz6wHGYK9HDR0yKor5CAqd8r1HFcv6eXMC6CstzEALhcG+o4lIpTvewW008RgFbULlwqcOQcM7mTBRzB87kFUupLex3MtKkD/Y7W8NS3zQaiOwOgwNNQZ8qInJShT6npaJH0qvN30uLeafFHD/BX4RfqOXN0dCu7Ds8GFKetFODB0w== 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=K/L24AEKdoRgEPRO2CVcXeWBPixQPOcQwBT3h/dbNVGtSdpePNWsUE5rqcH5qqdR3btkdjGmeTgFixieygXD+s5eQGJCh46e63I9GB0h+0O4BUqLUQ6VVu9tvnjtEYZedQiRImiq0JF5gyOKOm0l5OWcrPYMDMRqD4fORjK4UwxNCyfFl3PxX02yzbuqX1quqb3SqNdqaXPVtTgjbl/6beRtbWt/4QkmcJphEc/n85eFzcoZz5kkHAwIkyBBwrh50cI3s1IqyjcsjVDK3fM9dArkuM9rD+1NFtpJ1eJletGxzFdJxyboibQV9eQqA9ZzRRs/JWzf3dMA/sqYEspQOw== 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 DU0PR08MB8907.eurprd08.prod.outlook.com (2603:10a6:10:47f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.9; Fri, 16 Oct 2026 15:26:11 +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.006; Fri, 16 Oct 2026 15:26:11 +0000 From: Andrey Drobyshev Date: Fri, 16 Oct 2026 18:26:03 +0300 Subject: [PATCH QEMU HCI-8.1 v3 05/28] hw/vfio: Fix liveness check in vfio_connect_kvm_msi_virq() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20261016-vfio_v1-v3-5-47487cb5a8e5@virtuozzo.com> References: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> In-Reply-To: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR10CA0088.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::17) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DU0PR08MB8907:EE_ X-MS-Office365-Filtering-Correlation-Id: 95177e5c-ebfc-4ca6-ca27-08df2b99ccbb 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|23010399003|52116014|1800799024|366016|376014|5113699003|18002099003|22082099003|260925021911599003|260925022911599003|10067099003|260925021311599003|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: iO6LaayjQRMq2VK8H71Ozha2fEyy570xGey6KSvf/2b4kY3/V4xuP/4/ccmizYpTYzLAdFQ02m5iKu78Tef+Uyqev45HKoZYawn20pVcAYtaylQ5K4nIDMFO/B/i9WYpmf7KTAaesuwMyrqGJ4aRF5fhY8CD2mH+OmgDdDERFP6kiRxIpQgFpAcJZTpCDeiEKgXN3HnNqlWmDEao9AlOizxAbIcjpasJU9nJwMj4m0PddXhX5d+G+MWHQZsPyn57M2PN6+XSrTdZNlL8CxBKaOpUcJVQyvcv77PqvrSU+xw7wWxj7ItbdMxGrRdXE/CIKwpiUlJdogtB48us/bwX2ubwYptTDtTa/fC5/L6KCv98H02ZAj256oT3TQVwGcZVSSF/f8Bu2MTgg6Een0SocOZSmf3rZg9h9rD03WDtLu+4ZPnucNbAdc/Zbfa3OiVtA9CxqL+RoLmNq8VaLuPxaTpqA26rAsv9qJKCqTi5qU8lbSsQHLccBvFYSaoBGhXvomgYhtEI+zEuy0uJxEd9HxoFQiN3KjixKkhSgfplEYRmAw0FOIGX13plnWT9fWfauP4itwpCBeya3ockj1+Lv6rUV0aSKbwSn03XjOQI7DbJnCun8NOgSp2iQqlhsCdat06FYZ9iOKQWKUOAdLokWMTbNgk35K5ftsVZ80zwoqo= 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)(23010399003)(52116014)(1800799024)(366016)(376014)(5113699003)(18002099003)(22082099003)(260925021911599003)(260925022911599003)(10067099003)(260925021311599003)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WFdiTnkyYllXdkNidXhUQWZob2pKTWxMMncvVFY0T08zQ0twTnk3UmJjWERT?= =?utf-8?B?QjFNNkNuM3hha1g3eUxQZ3BXbzdBUys2MDNqQk1EWHVVeTdLdHUvdW9Va2x6?= =?utf-8?B?SE1oaVR5K1h5KzhCQktPUkNudHlQZnozRXdqTEVrbU03QjhnaTNIQjFwQU53?= =?utf-8?B?RVhDR0pBQzk5V0xjejdNYkVhTVJ3Ri9WVHlBVlBDOU5lVkp2QnZWYk5iYlZ5?= =?utf-8?B?VHloR2ZZV0swT2lGNmplOW9CaXorcVBIaUFqSWczK0lHMzBzZDI1d3o4Sis1?= =?utf-8?B?K2pmN1hyU0M1aUp2NWdBY0N5NG03bjdZbkNRRExtMDZjaWMvcERPdGFZVExV?= =?utf-8?B?Y0dtRjVVOE1BdHYxTVg4SkNBSUpSaWxEOS9aaDRNa0lhZXlxR0NLN1UwRW5o?= =?utf-8?B?OHppUCtXaCtMemxJUU1NR3ZIQU5VSmtMYTNpOWlaTElrQ1E2WlF2eXltaW9h?= =?utf-8?B?VGxTYUp3Y2t1ZXhvejJSamdrWHF6YWRQTit6c3A0d09LWGFDQUFEUkhHRGMx?= =?utf-8?B?MCtkM2gvaE9kcVRFQm5ucU01T1BodDZHcGRsUmpHaEpjOURKK0Faa3kwQXor?= =?utf-8?B?SlIxZG9pVVVzaDJ6YkNGWE9BekQ2STVxT0ZjZGkyeDIzejBIYkdtdFFOQ0hS?= =?utf-8?B?bXZqS085VEpKU3dPY1VoK3pLYkpnQWNxKy9tQ1Y5aVZ0QlBEU2RFeHRGUUxH?= =?utf-8?B?MkVkTGxpMkhWQklZdVRYbW1ram5KOVgwWDNQd0RSMXhjQUlIbzEvTzNtM0pm?= =?utf-8?B?M0Y4VTNkZkNXRDF1dHQvYThKeFhBSUptSy9aMndqbDMvZkVhMllOakx3ODNY?= =?utf-8?B?V1h2YlhtM2tKZkN5MnlDdkJIVHV5UVQ5bll3MGc5S2pwUzlFT2c5dkJVQjd2?= =?utf-8?B?Z09QcjU1cU5WQlRqSUF5N3p1aXVtZzhJRUR3aTRQeUQ3NU1OblFReFhNaEpM?= =?utf-8?B?ZExnOUgzNEhLcCtwQ1ZwZ0h4WFlrZlhia3o2d3NwSVZwcjN3SER3bEVVdXBu?= =?utf-8?B?OTJiakNsbTdvMU5XTFpDS2wvNVRoTURvcmtVTW52ZHJVUUVkWU04UzdOd2wx?= =?utf-8?B?Szd4WlNQRlBQNmUyR3Q2QkVCL1FsZ2JiVk5JNFRxWUFRajBCUnZScG5USFV0?= =?utf-8?B?cHgxWnF3d3NreEtXUXhvamJWNFRHTWVvR0ljQlk1dk53R3RmbSt1WWxEeENi?= =?utf-8?B?SXpld2dEKzQ0NmN1c2pmTW82TUtsL1cvOTREYWgzT2l0Q1doSy90eldjYmdN?= =?utf-8?B?VkdPOU0wdnNPRmRDNU5rMEs2Y3VkWHdiM0JWeVRRUGtZZFpJcytyT0NLaTVP?= =?utf-8?B?QUdUSkpnQzN1VklJZWRtWENUUDZrRFJKa3M4RXVBN090V2RFdldOaHc3V0ZX?= =?utf-8?B?WnpnTThNazBjRUo5T2FXQmc4eExFd0tIM01RVmx2VHEyZFpuRFdBSXljTCtu?= =?utf-8?B?Z1BrSk5pc1I4MjRYZDA2V2lUVHRSME9IZzQwaTllNWdzenRDZUtrUTNDaEcx?= =?utf-8?B?SGE2bmJuVWZNWWNtQnRScU1VTHN2VU1xWUZZV0IycVJ2MGlvTjFZZlhlNXdS?= =?utf-8?B?dDdmamkrM3RmQUh0MWJ2a2NEdk85L2haSFhxS3R0U0JtMUlDMmpiU2U0aTdi?= =?utf-8?B?NVROYURxYkdrd0lRTWVSSmo3Z2loYUZlQm8wQWw5dUd1SlRXNFdWTkMyRUd4?= =?utf-8?B?T251QXVteUZsZVVoaVJUc3plRnZzMG92WS9Qd2FUVGtjeVg0clpLM1E3bmxu?= =?utf-8?B?UHVjODFyanc1SVZRVS9OYk4yUXZpajlsL0JJeUF2Wm9LTU5KYmpBL0NKNmMr?= =?utf-8?B?dnU3MTA3bG92a09WcU9rb0pLNU42ZXFJUEFJMEg4OWV1K2tIMm93SkFMMGJu?= =?utf-8?B?V2Q4cnFzb0V2cXI0MXJLNGRPZ2JWNXJWd0g5TnQ0dGVwMzVKOXo4S2Nuc1hm?= =?utf-8?B?cVBXb09iNVNRbHdVaW9aNndtN2IyNTZWV0ZCeHVPZzVWWEdMTlVyUlNaZ0VL?= =?utf-8?B?VmZOeGw5d1ZMTlZrbHA1SE4rWkdEdjhKc1ZTZmZtVStqY2htUUlRTWhxUW0v?= =?utf-8?B?VXJCbUdTdGJCTUEyQURVQVM2SnZqSldJN3VnM3dxaVdTZmZRMHF4SkdXc1VH?= =?utf-8?B?ZE5uNWlPZUtJNVUxK2VqUWdyYVVCZHg0clE2L1FDVnlGUHZLTTVHcER1ZEJ6?= =?utf-8?B?L0MvbzFoL3U1ZFJ6a09WTGV6YmJhUHRaa1hibHNxWStaZW1NdFRLdnpBYTVr?= =?utf-8?B?NFNDdURzcC83enExdSt2VzMxOTkvSURPZmR6ZWRHZVM2bXBicG5mbng5Q2ZG?= =?utf-8?B?a0wxRGdVdUtuMmFISk82QlJQRFJlZVNDdHlLOUY5Njl0cFMrZC9ybExpeVBI?= =?utf-8?Q?tl3aA7BV6ROywd/Y=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95177e5c-ebfc-4ca6-ca27-08df2b99ccbb X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2026 15:26:07.6026 (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: ZNU7XVJ2KNxff2unTMmCJ8wvq5x/6b7MkqsgCLnZuDzOkPutPn97WGQQd1DAeJXprtoXqfvjY2yju/5gEnQ9rlvTTYX9a84IiChfqqcuARE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8907 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