pci: fix resource release when unmapping
authorTetsuya Mukawa <mukawa@igel.co.jp>
Thu, 16 Jun 2016 02:33:10 +0000 (11:33 +0900)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 20 Jun 2016 08:46:04 +0000 (10:46 +0200)
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@igel.co.jp>
Acked-by: David Marchand <david.marchand@6wind.com>
lib/librte_eal/common/eal_common_pci_uio.c

index 70c6155..367a681 100644 (file)
@@ -169,7 +169,8 @@ 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);
        }
 }