From: Jan Engelhardt Date: Thu, 15 Apr 2010 21:47:07 +0000 (+0200) Subject: xt_TEE: move skb cleanup outwards X-Git-Tag: v1.25~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ff64f4ef48a67b10e5a8e3690d7976597bf6c52;p=thirdparty%2Fxtables-addons.git xt_TEE: move skb cleanup outwards --- diff --git a/extensions/xt_TEE.c b/extensions/xt_TEE.c index fbd3ece..8be6173 100644 --- a/extensions/xt_TEE.c +++ b/extensions/xt_TEE.c @@ -47,10 +47,8 @@ tee_tg_route4(struct sk_buff *skb, const struct xt_tee_tginfo *info) fl.nl_u.ip4_u.tos = RT_TOS(iph->tos); fl.nl_u.ip4_u.scope = RT_SCOPE_UNIVERSE; - if (ip_route_output_key(&init_net, &rt, &fl) != 0) { - kfree_skb(skb); + if (ip_route_output_key(&init_net, &rt, &fl) != 0) return false; - } dst_release(skb_dst(skb)); skb_dst_set(skb, &rt->u.dst); @@ -172,6 +170,8 @@ tee_tg4(struct sk_buff **pskb, const struct xt_target_param *par) tee_active[cpu] = true; tee_tg_send(skb); tee_active[cpu] = false; + } else { + kfree_skb(skb); } return XT_CONTINUE; } @@ -194,10 +194,8 @@ tee_tg_route6(struct sk_buff *skb, const struct xt_tee_tginfo *info) #else dst = ip6_route_output(dev_net(skb->dev), NULL, &fl); #endif - if (dst == NULL) { - kfree_skb(skb); + if (dst == NULL) return false; - } dst_release(skb_dst(skb)); skb_dst_set(skb, dst); @@ -234,6 +232,8 @@ tee_tg6(struct sk_buff **pskb, const struct xt_target_param *par) tee_active[cpu] = true; tee_tg_send(skb); tee_active[cpu] = false; + } else { + kfree_skb(skb); } return XT_CONTINUE; }