From fa233ab975da0eee4e55420f0379a37067e784f9 Mon Sep 17 00:00:00 2001 From: sujerry1991 Date: Wed, 21 May 2025 15:33:51 +0800 Subject: [PATCH] vfio-pci: fix a deadlock problem Fix c491725bbd "InterruptManager: Introduce the Interrupt Manager in Machine". Signed-off-by: Yan Wang --- vfio/src/vfio_pci.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/vfio/src/vfio_pci.rs b/vfio/src/vfio_pci.rs index d4c0dfee4..607ad0ff8 100644 --- a/vfio/src/vfio_pci.rs +++ b/vfio/src/vfio_pci.rs @@ -510,7 +510,6 @@ impl VfioPciDevice { let parent_bus = self.parent_bus().unwrap().clone(); let dev_id = self.dev_id.clone(); let devfn = self.base.devfn; - let cloned_msix = msix.clone(); let write = move |data: &[u8], _: GuestAddress, offset: u64| -> bool { let mut locked_msix = msix.lock().unwrap(); locked_msix.table[offset as usize..(offset as usize + data.len())] @@ -540,8 +539,7 @@ impl VfioPciDevice { gsi_route.irq_fd = Some(Arc::new(irq_fd)); } let irq_fd = gsi_route.irq_fd.clone(); - let msi_irq_manager = &cloned_msix.lock().unwrap().msi_irq_manager; - let irq_manager = msi_irq_manager.as_ref().unwrap(); + let irq_manager = &locked_msix.msi_irq_manager.as_ref().unwrap(); if gsi_route.gsi == -1 { gsi_route.gsi = match irq_manager.allocate_irq(msix_vector) { Ok(g) => g as i32, -- Gitee