Fix double-free: NF_HOOK sometimes frees the sk_buff passed in.
[sliver-openvswitch.git] / datapath / datapath.c
index 07fa92d..4f5acd0 100644 (file)
@@ -466,7 +466,6 @@ do_port_input(struct net_bridge_port *p, struct sk_buff *skb)
 #ifdef SUPPORT_SNAT
        /* Check if this packet needs early SNAT processing. */
        if (snat_pre_route(skb)) {
-               kfree_skb(skb);
                return;
        }
 #endif
@@ -1176,13 +1175,11 @@ static int dp_genl_query(struct sk_buff *skb, struct genl_info *info)
 
                genlmsg_end(ans_skb, data);
                err = genlmsg_reply(ans_skb, info);
-               if (!err)
-                       ans_skb = NULL;
+               ans_skb = NULL;
        }
 err:
 nla_put_failure:
-       if (ans_skb)
-               kfree_skb(ans_skb);
+       kfree_skb(ans_skb);
        rcu_read_unlock();
        return err;
 }