Hello Chengwen, Thanks for the reviews!
On Wed, 24 Jun 2026 at 03:24, fengchengwen <[email protected]> wrote: > > On 6/23/2026 6:54 PM, David Marchand wrote: > > When calling this bus cleanup, PCI resources were not unmapped. > > > > Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown") > > Cc: [email protected] > > > > Signed-off-by: David Marchand <[email protected]> > > --- > > drivers/bus/pci/pci_common.c | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c > > index fd18b8772b..791e9a7b49 100644 > > --- a/drivers/bus/pci/pci_common.c > > +++ b/drivers/bus/pci/pci_common.c > > @@ -344,6 +344,10 @@ pci_cleanup(void) > > rte_errno = errno; > > error = -1; > > } > > + > > + if (drv->drv_flags & RTE_PCI_DRV_NEED_MAPPING) > > + rte_pci_unmap_device(dev); > > rte_pci_unmap_device() also invoked in some drivers remove callback, e.g. > eth_virtio_pci_uninit() > ifcvf_pci_remove() > ... > > In this case it may doulbe-free $ git grep -l rte_pci_unmap_device drivers :^drivers/bus/pci | cut -d / -f 2,3 | sort -u net/nbl net/virtio net/xsc vdpa/ifc vdpa/nfp vdpa/sfc Those drivers do not set RTE_PCI_DRV_NEED_MAPPING and have their own logic when it comes to mapping/unmapping resources. $ for drv in $(git grep -l rte_pci_unmap_device drivers :^drivers/bus/pci | cut -d / -f 2,3 | sort -u); do git grep -l RTE_PCI_DRV_NEED_MAPPING drivers/$drv; done drivers/vdpa/nfp/nfp_vdpa.c I suspect calling rte_pci_unmap_device twice will end up with some error before a double free. Worth a fix on vdpa/nfp regardless, I'll work on it quickly. Thanks again! -- David Marchand

