* [dpdk-dev] [PATCH 0/3] fixes for af_packet driver
@ 2020-07-06 12:26 wangyunjian
2020-07-06 12:27 ` [dpdk-dev] [PATCH 1/3] net/af_packet: fix check of file descriptors wangyunjian
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: wangyunjian @ 2020-07-06 12:26 UTC (permalink / raw)
To: dev; +Cc: linville, jerry.lilijun, xudingke, Yunjian Wang
From: Yunjian Wang <wangyunjian@huawei.com>
This series include three fixes patches for af_packet driver.
Yunjian Wang (3):
net/af_packet: fix check of file descriptors
net/af_packet: fix mem leak on init failure
net/af_packet: fix wrong munmap on init failure
drivers/net/af_packet/rte_eth_af_packet.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-dev] [PATCH 1/3] net/af_packet: fix check of file descriptors
2020-07-06 12:26 [dpdk-dev] [PATCH 0/3] fixes for af_packet driver wangyunjian
@ 2020-07-06 12:27 ` wangyunjian
2020-07-06 12:27 ` [dpdk-dev] [PATCH 2/3] net/af_packet: fix mem leak on init failure wangyunjian
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: wangyunjian @ 2020-07-06 12:27 UTC (permalink / raw)
To: dev; +Cc: linville, jerry.lilijun, xudingke, Yunjian Wang, stable
From: Yunjian Wang <wangyunjian@huawei.com>
Zero is a valid fd. It will fail to check the fd if the fd is zero.
Fixes: 527740ccfaec ("af_packet: fix some leaks")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
drivers/net/af_packet/rte_eth_af_packet.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 22feb72..361b5d5 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -645,6 +645,8 @@ struct pmd_internals {
for (q = 0; q < nb_queues; q++) {
(*internals)->rx_queue[q].map = MAP_FAILED;
(*internals)->tx_queue[q].map = MAP_FAILED;
+ (*internals)->rx_queue[q].sockfd = -1;
+ (*internals)->tx_queue[q].sockfd = -1;
}
req = &((*internals)->req);
@@ -848,7 +850,7 @@ struct pmd_internals {
rte_free((*internals)->rx_queue[q].rd);
rte_free((*internals)->tx_queue[q].rd);
- if (((*internals)->rx_queue[q].sockfd != 0) &&
+ if (((*internals)->rx_queue[q].sockfd >= 0) &&
((*internals)->rx_queue[q].sockfd != qsockfd))
close((*internals)->rx_queue[q].sockfd);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [dpdk-dev] [PATCH 2/3] net/af_packet: fix mem leak on init failure
2020-07-06 12:26 [dpdk-dev] [PATCH 0/3] fixes for af_packet driver wangyunjian
2020-07-06 12:27 ` [dpdk-dev] [PATCH 1/3] net/af_packet: fix check of file descriptors wangyunjian
@ 2020-07-06 12:27 ` wangyunjian
2020-07-06 12:28 ` [dpdk-dev] [PATCH 3/3] net/af_packet: fix wrong munmap " wangyunjian
2020-07-14 14:58 ` [dpdk-dev] [PATCH 0/3] fixes for af_packet driver Ferruh Yigit
3 siblings, 0 replies; 5+ messages in thread
From: wangyunjian @ 2020-07-06 12:27 UTC (permalink / raw)
To: dev; +Cc: linville, jerry.lilijun, xudingke, Yunjian Wang, stable
From: Yunjian Wang <wangyunjian@huawei.com>
Add missing code to free memory when the device initialization fails.
Fixes: ccd37d341e8d ("net/af_packet: remove queue number limitation")
Fixes: 5f19dee604ed ("drivers/net: do not use private ethdev data")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
drivers/net/af_packet/rte_eth_af_packet.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 361b5d5..be3fabb 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -637,9 +637,7 @@ struct pmd_internals {
sizeof(struct pkt_tx_queue),
0, numa_node);
if (!(*internals)->rx_queue || !(*internals)->tx_queue) {
- rte_free((*internals)->rx_queue);
- rte_free((*internals)->tx_queue);
- return -1;
+ goto free_internals;
}
for (q = 0; q < nb_queues; q++) {
@@ -664,20 +662,20 @@ struct pmd_internals {
PMD_LOG(ERR,
"%s: I/F name too long (%s)",
name, pair->value);
- return -1;
+ goto free_internals;
}
if (ioctl(sockfd, SIOCGIFINDEX, &ifr) == -1) {
PMD_LOG_ERRNO(ERR, "%s: ioctl failed (SIOCGIFINDEX)", name);
- return -1;
+ goto free_internals;
}
(*internals)->if_name = strdup(pair->value);
if ((*internals)->if_name == NULL)
- return -1;
+ goto free_internals;
(*internals)->if_index = ifr.ifr_ifindex;
if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) == -1) {
PMD_LOG_ERRNO(ERR, "%s: ioctl failed (SIOCGIFHWADDR)", name);
- return -1;
+ goto free_internals;
}
memcpy(&(*internals)->eth_addr, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
@@ -701,7 +699,7 @@ struct pmd_internals {
PMD_LOG_ERRNO(ERR,
"%s: could not open AF_PACKET socket",
name);
- return -1;
+ goto error;
}
tpver = TPACKET_V2;
@@ -854,6 +852,9 @@ struct pmd_internals {
((*internals)->rx_queue[q].sockfd != qsockfd))
close((*internals)->rx_queue[q].sockfd);
}
+free_internals:
+ rte_free((*internals)->rx_queue);
+ rte_free((*internals)->tx_queue);
free((*internals)->if_name);
rte_free(*internals);
return -1;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [dpdk-dev] [PATCH 3/3] net/af_packet: fix wrong munmap on init failure
2020-07-06 12:26 [dpdk-dev] [PATCH 0/3] fixes for af_packet driver wangyunjian
2020-07-06 12:27 ` [dpdk-dev] [PATCH 1/3] net/af_packet: fix check of file descriptors wangyunjian
2020-07-06 12:27 ` [dpdk-dev] [PATCH 2/3] net/af_packet: fix mem leak on init failure wangyunjian
@ 2020-07-06 12:28 ` wangyunjian
2020-07-14 14:58 ` [dpdk-dev] [PATCH 0/3] fixes for af_packet driver Ferruh Yigit
3 siblings, 0 replies; 5+ messages in thread
From: wangyunjian @ 2020-07-06 12:28 UTC (permalink / raw)
To: dev; +Cc: linville, jerry.lilijun, xudingke, Yunjian Wang, stable
From: Yunjian Wang <wangyunjian@huawei.com>
Add a missing available check and fix the wrong address passed
to munmap on init failure.
Fixes: dd6590fe2fd7 ("af_packet: fix possible memory leak")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
drivers/net/af_packet/rte_eth_af_packet.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index be3fabb..4d2e1f6 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -843,8 +843,9 @@ struct pmd_internals {
if (qsockfd != -1)
close(qsockfd);
for (q = 0; q < nb_queues; q++) {
- munmap((*internals)->rx_queue[q].map,
- 2 * req->tp_block_size * req->tp_block_nr);
+ if ((*internals)->rx_queue[q].map != MAP_FAILED)
+ munmap((*internals)->rx_queue[q].map,
+ 2 * req->tp_block_size * req->tp_block_nr);
rte_free((*internals)->rx_queue[q].rd);
rte_free((*internals)->tx_queue[q].rd);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] fixes for af_packet driver
2020-07-06 12:26 [dpdk-dev] [PATCH 0/3] fixes for af_packet driver wangyunjian
` (2 preceding siblings ...)
2020-07-06 12:28 ` [dpdk-dev] [PATCH 3/3] net/af_packet: fix wrong munmap " wangyunjian
@ 2020-07-14 14:58 ` Ferruh Yigit
3 siblings, 0 replies; 5+ messages in thread
From: Ferruh Yigit @ 2020-07-14 14:58 UTC (permalink / raw)
To: wangyunjian, dev; +Cc: linville, jerry.lilijun, xudingke
On 7/6/2020 1:26 PM, wangyunjian wrote:
> From: Yunjian Wang <wangyunjian@huawei.com>
>
> This series include three fixes patches for af_packet driver.
>
> Yunjian Wang (3):
> net/af_packet: fix check of file descriptors
> net/af_packet: fix mem leak on init failure
> net/af_packet: fix wrong munmap on init failure
>
For series,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Series applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-07-14 14:58 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-06 12:26 [dpdk-dev] [PATCH 0/3] fixes for af_packet driver wangyunjian
2020-07-06 12:27 ` [dpdk-dev] [PATCH 1/3] net/af_packet: fix check of file descriptors wangyunjian
2020-07-06 12:27 ` [dpdk-dev] [PATCH 2/3] net/af_packet: fix mem leak on init failure wangyunjian
2020-07-06 12:28 ` [dpdk-dev] [PATCH 3/3] net/af_packet: fix wrong munmap " wangyunjian
2020-07-14 14:58 ` [dpdk-dev] [PATCH 0/3] fixes for af_packet driver Ferruh Yigit
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.