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

Reply via email to