summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorJeff Guo <jia.guo@intel.com>2018-10-18 14:27:15 +0800
committerThomas Monjalon <thomas@monjalon.net>2018-10-25 02:11:22 +0200
commit70efa4116420b6f7a0734711dd603d3024366c79 (patch)
tree2777d1be70c56c20bd29dc28ac9656afade9c0fd /kernel
parent88d0e47880ec729dac682be5e4242e13ffd7dcd2 (diff)
downloaddpdk-70efa4116420b6f7a0734711dd603d3024366c79.zip
dpdk-70efa4116420b6f7a0734711dd603d3024366c79.tar.gz
dpdk-70efa4116420b6f7a0734711dd603d3024366c79.tar.xz
igb_uio: fix unexpected removal for hot-unplug
When a device is hot-unplugged, pci_remove will be invoked unexpectedly before pci_release, it will caused kernel hung issue which will throw the error info of "Trying to free already-free IRQ XXX". And on the other hand, if pci_remove before pci_release, the interrupt will not got chance to be disabled. So this patch aim to fix this issue by adding pci_release call in pci_remove, it will gurranty that all pci clean up will be done before pci removal. Signed-off-by: Jeff Guo <jia.guo@intel.com> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/linux/igb_uio/igb_uio.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/linux/igb_uio/igb_uio.c b/kernel/linux/igb_uio/igb_uio.c
index fede66c..3cf394b 100644
--- a/kernel/linux/igb_uio/igb_uio.c
+++ b/kernel/linux/igb_uio/igb_uio.c
@@ -570,6 +570,8 @@ igbuio_pci_remove(struct pci_dev *dev)
{
struct rte_uio_pci_dev *udev = pci_get_drvdata(dev);
+ igbuio_pci_release(&udev->info, NULL);
+
sysfs_remove_group(&dev->dev.kobj, &dev_attr_grp);
uio_unregister_device(&udev->info);
igbuio_pci_release_iomem(&udev->info);