If recirc action is the last action of a action list, the SKB triggers the recirc will be freed twice. This patch fixes this bug.
Reported-by: Justin Pettit <jpet...@nicira.com> Signed-off-by: Andy Zhou <az...@nicira.com> --- datapath/actions.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/datapath/actions.c b/datapath/actions.c index d70348e..2bfc527 100644 --- a/datapath/actions.c +++ b/datapath/actions.c @@ -897,6 +897,12 @@ static int do_execute_actions(struct datapath *dp, struct sk_buff *skb, case OVS_ACTION_ATTR_RECIRC: err = execute_recirc(dp, skb, a, rem); + if (last_action(a, rem)) { + /* If this is the last action, the skb has + * been consumed or freed. + * Return immediately. */ + return err; + } break; case OVS_ACTION_ATTR_SET: -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev