This patch fixes wrong resource release of pci_uio_unmap(). The 'path' member of mapped_pci_resource structure is allocated by primary process, but currently it will be freed by both primary and secondary process. The patch fixes to be freed by only primary process.
Signed-off-by: Tetsuya Mukawa <mukawa at igel.co.jp> --- lib/librte_eal/common/eal_common_pci_uio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/common/eal_common_pci_uio.c b/lib/librte_eal/common/eal_common_pci_uio.c index f062e81..488b6dd 100644 --- a/lib/librte_eal/common/eal_common_pci_uio.c +++ b/lib/librte_eal/common/eal_common_pci_uio.c @@ -159,7 +159,9 @@ pci_uio_unmap(struct mapped_pci_resource *uio_res) for (i = 0; i != uio_res->nb_maps; i++) { pci_unmap_resource(uio_res->maps[i].addr, (size_t)uio_res->maps[i].size); - rte_free(uio_res->maps[i].path); + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + rte_free(uio_res->maps[i].path); } } -- 2.7.4