]> git.droids-corp.org - dpdk.git/commitdiff
net/tap: fix device freeing
authorYunjian Wang <wangyunjian@huawei.com>
Tue, 7 Jun 2022 06:50:57 +0000 (14:50 +0800)
committerAndrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Wed, 8 Jun 2022 12:39:13 +0000 (14:39 +0200)
The error path was calling rte_eth_dev_release_port() function,
which frees eth_dev->data->dev_private, and then tries to free
pmd->intr_handle, which causes the use after free issue.

The free can be moved to before the release function is called.

Fixes: d61138d4f0e ("drivers: remove direct access to interrupt handle")
Cc: stable@dpdk.org
Signed-off-by: Xiangjun Meng <mengxiangjun4@huawei.com>
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
drivers/net/tap/rte_eth_tap.c

index 5495818be68ba04cd47e79b857341d13238ec548..9e1032fe7269c0bbc11b99b624ed96d93c830b66 100644 (file)
@@ -2179,8 +2179,8 @@ error_exit:
                close(pmd->ioctl_sock);
        /* mac_addrs must not be freed alone because part of dev_private */
        dev->data->mac_addrs = NULL;
-       rte_eth_dev_release_port(dev);
        rte_intr_instance_free(pmd->intr_handle);
+       rte_eth_dev_release_port(dev);
 
 error_exit_nodev:
        TAP_LOG(ERR, "%s Unable to initialize %s",