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);
tee_active[cpu] = true;
tee_tg_send(skb);
tee_active[cpu] = false;
+ } else {
+ kfree_skb(skb);
}
return XT_CONTINUE;
}
#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);
tee_active[cpu] = true;
tee_tg_send(skb);
tee_active[cpu] = false;
+ } else {
+ kfree_skb(skb);
}
return XT_CONTINUE;
}