[dpdk-dev] [PATCH 1/2] net/mlx5: fix multiple free issue when attr ctx is NULL
Raslan Darawsheh
rasland at mellanox.com
Mon May 7 19:22:14 CEST 2018
Hi Yongseok,
Thx for your review.
But I already sent a V2 for this patch which handles the redundant goto that I had.
But still missing the fix for title.
I'll submit a v3 tomorrow with a fixed title.
Kindest regards
Raslan Darawsheh
________________________________
From: Yongseok Koh
Sent: Monday, May 7, 2018 8:14:22 PM
To: Raslan Darawsheh
Cc: Shahaf Shuler; dev at dpdk.org; Thomas Monjalon; Ophir Munk; stable at dpdk.org
Subject: Re: [dpdk-dev] [PATCH 1/2] net/mlx5: fix multiple free issue when attr ctx is NULL
> On May 7, 2018, at 5:18 AM, Raslan Darawsheh <rasland at mellanox.com> wrote:
Please don't use PMD/code specific words in the title. I suggest:
net/mlx5: fix double free on error handling
> When attr_ctx is NULL it will attempt to free the list of devices twice.
> So, changing it to be freed in error handling only.
>
> Fixes: 771fa900 ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters")
Prefer to put 12 figures?
> Cc: stable at dpdk.org
New line here.
> Signed-off-by: Raslan Darawsheh <rasland at mellanox.com>
> ---
> drivers/net/mlx5/mlx5.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
> index 5190b9f..d34076b 100644
> --- a/drivers/net/mlx5/mlx5.c
> +++ b/drivers/net/mlx5/mlx5.c
> @@ -690,7 +690,6 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
> break;
> }
> if (attr_ctx == NULL) {
> - mlx5_glue->free_device_list(list);
> switch (err) {
> case 0:
> DRV_LOG(ERR,
> @@ -701,6 +700,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
> DRV_LOG(ERR,
> "cannot use device, are drivers up to date?");
> goto error;
> + default:
> + goto error;
> }
> }
> ibv_dev = list[i];
> --
Nice catch!
Looks the goto lines are redundant. How about this instead?
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 5190b9fcd..270f59b27 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -690,18 +690,16 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
break;
}
if (attr_ctx == NULL) {
- mlx5_glue->free_device_list(list);
switch (err) {
case 0:
DRV_LOG(ERR,
"cannot access device, is mlx5_ib loaded?");
err = ENODEV;
- goto error;
case EINVAL:
DRV_LOG(ERR,
"cannot use device, are drivers up to date?");
- goto error;
}
+ goto error;
}
ibv_dev = list[i];
DRV_LOG(DEBUG, "device opened");
Thanks,
Yongseok
More information about the dev
mailing list