in case of error from netdev_push_header() batch of packets was not freed. Following patch fixes this issue.
Signed-off-by: Pravin B Shelar <pshe...@ovn.org> --- lib/dpif-netdev.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index f0d5fca..9ff413f 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -3685,16 +3685,22 @@ push_tnl_action(const struct dp_netdev *dp, { struct dp_netdev_port *tun_port; const struct ovs_action_push_tnl *data; + int err; data = nl_attr_get(attr); tun_port = dp_netdev_lookup_port(dp, u32_to_odp(data->tnl_port)); if (!tun_port) { - return -EINVAL; + err = -EINVAL; + goto error; } - netdev_push_header(tun_port->netdev, batch, data); - - return 0; + err = netdev_push_header(tun_port->netdev, batch, data); + if (!err) { + return 0; + } +error: + dp_packet_delete_batch(batch, true); + return err; } static void @@ -3737,8 +3743,6 @@ dp_execute_cb(void *aux_, struct dp_packet_batch *packets_, (*depth)++; dp_netdev_recirculate(pmd, packets_); (*depth)--; - } else { - dp_packet_delete_batch(&tnl_pkt, !may_steal); } return; } -- 2.5.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev