[dpdk-dev] [PATCH v8 03/12] eal: Fix memory leaks and needless increment of pci_map_addr

Tetsuya Mukawa mukawa at igel.co.jp
Wed Jul 8 04:42:24 CEST 2015


On 2015/07/07 17:04, David Marchand wrote:
> Hello Tetsuya, 
>
> Little comment below for this patch.
>
> On Mon, Jul 6, 2015 at 8:24 AM, Tetsuya Mukawa <mukawa at igel.co.jp
> <mailto:mukawa at igel.co.jp>> wrote:
>
>
>     diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c
>     b/lib/librte_eal/bsdapp/eal/eal_pci.c
>     index a63d450..63758c7 100644
>     --- a/lib/librte_eal/bsdapp/eal/eal_pci.c
>     +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c
>     @@ -202,7 +202,7 @@ pci_uio_map_resource(struct rte_pci_device *dev)
>             uint64_t offset;
>             uint64_t pagesz;
>             struct rte_pci_addr *loc = &dev->addr;
>     -       struct uio_resource *uio_res;
>     +       struct uio_resource *uio_res = NULL;
>             struct uio_res_list *uio_res_list =
>                             RTE_TAILQ_CAST(rte_uio_tailq.head,
>     uio_res_list);
>             struct uio_map *maps;
>     [snip]
>     @@ -275,6 +274,16 @@ pci_uio_map_resource(struct rte_pci_device *dev)
>             TAILQ_INSERT_TAIL(uio_res_list, uio_res, next);
>
>             return 0;
>     +
>     +error:
>     +       if (uio_res)
>     +               rte_free(uio_res);
>
>
> As long as uio_res is initialized to NULL, no need to check.
> rte_free() behaves the same as free().
>  

Oh, I didn't notice it. Thanks.

>
>     diff --git a/lib/librte_eal/linuxapp/eal/eal_pci_uio.c
>     b/lib/librte_eal/linuxapp/eal/eal_pci_uio.c
>     index 37dc936..4e50533 100644
>     --- a/lib/librte_eal/linuxapp/eal/eal_pci_uio.c
>     +++ b/lib/librte_eal/linuxapp/eal/eal_pci_uio.c
>     [snip]
>     @@ -400,6 +397,25 @@ pci_uio_map_resource(struct rte_pci_device *dev)
>             TAILQ_INSERT_TAIL(uio_res_list, uio_res, next);
>
>             return 0;
>     +
>     +error:
>     +       for (i = 0; i < map_idx; i++) {
>     +               pci_unmap_resource(uio_res->maps[i].addr,
>     +                               (size_t)uio_res->maps[i].size);
>     +               rte_free(maps[i].path);
>     +       }
>     +       if (uio_res)
>     +               rte_free(uio_res);
>
>
> Idem.
>
>
> With this, 
> Acked-by: David Marchand <david.marchand at 6wind.com
> <mailto:david.marchand at 6wind.com>>
>

I will fix codes like above.

Tetsuya


> -- 
> David Marchand



More information about the dev mailing list