Message ID | 1409737426-22245-1-git-send-email-roy.qing.li@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, Sep 3, 2014 at 2:43 AM, <roy.qing.li@gmail.com> wrote: > From: Li RongQing <roy.qing.li@gmail.com> > > distinguish between the dropped and consumed skb, not assume the skb > is consumed always > > Cc: Thomas Graf <tgraf@noironetworks.com> > Cc: Pravin Shelar <pshelar@nicira.com> > Signed-off-by: Li RongQing <roy.qing.li@gmail.com> Acked-by: Pravin B Shelar <pshelar@nicira.com> Thanks. > --- > net/openvswitch/datapath.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c > index 35d866f..91d66b7 100644 > --- a/net/openvswitch/datapath.c > +++ b/net/openvswitch/datapath.c > @@ -265,8 +265,11 @@ void ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb) > upcall.key = &key; > upcall.userdata = NULL; > upcall.portid = ovs_vport_find_upcall_portid(p, skb); > - ovs_dp_upcall(dp, skb, &upcall); > - consume_skb(skb); > + error = ovs_dp_upcall(dp, skb, &upcall); > + if (unlikely(error)) > + kfree_skb(skb); > + else > + consume_skb(skb); > stats_counter = &stats->n_missed; > goto out; > } > -- > 1.7.10.4 > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: roy.qing.li@gmail.com Date: Wed, 3 Sep 2014 17:43:45 +0800 > From: Li RongQing <roy.qing.li@gmail.com> > > distinguish between the dropped and consumed skb, not assume the skb > is consumed always > > Cc: Thomas Graf <tgraf@noironetworks.com> > Cc: Pravin Shelar <pshelar@nicira.com> > Signed-off-by: Li RongQing <roy.qing.li@gmail.com> Applied, thank you. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index 35d866f..91d66b7 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c @@ -265,8 +265,11 @@ void ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb) upcall.key = &key; upcall.userdata = NULL; upcall.portid = ovs_vport_find_upcall_portid(p, skb); - ovs_dp_upcall(dp, skb, &upcall); - consume_skb(skb); + error = ovs_dp_upcall(dp, skb, &upcall); + if (unlikely(error)) + kfree_skb(skb); + else + consume_skb(skb); stats_counter = &stats->n_missed; goto out; }