mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 14:25:26 +00:00
netdev-dpdk: fix mbuf leaks
mbufs could be chained (by the "next" field of rte_mbuf struct), when an mbuf is not big enough to hold a big packet, say when TSO is enabled. rte_pktmbuf_free_seg() frees the head mbuf only, leading mbuf leaks. This patch fix it by invoking the right API rte_pktmbuf_free(), to free all mbufs in the chain. Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
This commit is contained in:
committed by
Daniele Di Proietto
parent
f76def2592
commit
b00b4a8149
1
AUTHORS
1
AUTHORS
@@ -226,6 +226,7 @@ YAMAMOTO Takashi yamamoto@midokura.com
|
|||||||
Yasuhito Takamiya yasuhito@gmail.com
|
Yasuhito Takamiya yasuhito@gmail.com
|
||||||
Yin Lin linyi@vmware.com
|
Yin Lin linyi@vmware.com
|
||||||
Yu Zhiguo yuzg@cn.fujitsu.com
|
Yu Zhiguo yuzg@cn.fujitsu.com
|
||||||
|
Yuanhan Liu yuanhan.liu@linux.intel.com
|
||||||
ZhengLingyun konghuarukhr@163.com
|
ZhengLingyun konghuarukhr@163.com
|
||||||
Zoltán Balogh zoltan.balogh@ericsson.com
|
Zoltán Balogh zoltan.balogh@ericsson.com
|
||||||
Zoltan Kiss zoltan.kiss@citrix.com
|
Zoltan Kiss zoltan.kiss@citrix.com
|
||||||
|
@@ -396,7 +396,7 @@ free_dpdk_buf(struct dp_packet *p)
|
|||||||
{
|
{
|
||||||
struct rte_mbuf *pkt = (struct rte_mbuf *) p;
|
struct rte_mbuf *pkt = (struct rte_mbuf *) p;
|
||||||
|
|
||||||
rte_pktmbuf_free_seg(pkt);
|
rte_pktmbuf_free(pkt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1089,7 +1089,7 @@ dpdk_queue_flush__(struct netdev_dpdk *dev, int qid)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = nb_tx; i < txq->count; i++) {
|
for (i = nb_tx; i < txq->count; i++) {
|
||||||
rte_pktmbuf_free_seg(txq->burst_pkts[i]);
|
rte_pktmbuf_free(txq->burst_pkts[i]);
|
||||||
}
|
}
|
||||||
rte_spinlock_lock(&dev->stats_lock);
|
rte_spinlock_lock(&dev->stats_lock);
|
||||||
dev->stats.tx_dropped += txq->count-nb_tx;
|
dev->stats.tx_dropped += txq->count-nb_tx;
|
||||||
|
Reference in New Issue
Block a user