Use synchronous callback unregister to ensure no callbacks are running after interrupt uninstallation. This improves stability and prevents potential use-after-free issues during device teardown.
Signed-off-by: Rong Qian <[email protected]> Signed-off-by: Renyong Wan <[email protected]> --- drivers/net/xsc/xsc_vfio.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/xsc/xsc_vfio.c b/drivers/net/xsc/xsc_vfio.c index c233728c5f..cda21aa3f4 100644 --- a/drivers/net/xsc/xsc_vfio.c +++ b/drivers/net/xsc/xsc_vfio.c @@ -1113,11 +1113,11 @@ xsc_vfio_intr_handler_install(struct xsc_dev *xdev, rte_intr_callback_fn cb, voi static int xsc_vfio_intr_handler_uninstall(struct xsc_dev *xdev) { - if (rte_intr_fd_get(xdev->pci_dev->intr_handle) >= 0) - rte_intr_callback_unregister(xdev->pci_dev->intr_handle, - xdev->intr_cb, xdev->intr_cb_arg); - - rte_intr_instance_free(xdev->intr_handle); + if (rte_intr_fd_get(xdev->pci_dev->intr_handle) >= 0) { + rte_intr_disable(xdev->pci_dev->intr_handle); + rte_intr_callback_unregister_sync(xdev->pci_dev->intr_handle, + xdev->intr_cb, xdev->intr_cb_arg); + } return 0; } -- 2.25.1

