There was a chance we scheduled a device removal to the DPDK thread while that thread was already removing the device from a VFIO hotremove notification (on the DPDK interrupt thread). The second hotremove attempt touches some freed memory and segfaults. The VFIO hotremove notification already checks pending_removal flag under a mutex and sets it to true, so do the same in spdk_detach_rte() (called from the SPDK init thread). Change-Id: Ib3f0eb7c0c5c6e1ab8cf253b7711fd149925a143 Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1730 Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Michael Haeuptle <michaelhaeuptle@gmail.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot |
||
---|---|---|
.. | ||
env_internal.h | ||
env.c | ||
env.mk | ||
init.c | ||
Makefile | ||
memory.c | ||
pci_idxd.c | ||
pci_ioat.c | ||
pci_nvme.c | ||
pci_virtio.c | ||
pci_vmd.c | ||
pci.c | ||
spdk_env_dpdk.map | ||
threads.c |