From 8ff64f4ef48a67b10e5a8e3690d7976597bf6c52 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Thu, 15 Apr 2010 23:47:07 +0200 Subject: [PATCH] xt_TEE: move skb cleanup outwards --- extensions/xt_TEE.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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; }