|
|
@@ -418,12 +418,13 @@ bool batadv_frag_send_packet(struct sk_buff *skb,
|
|
|
struct batadv_neigh_node *neigh_node)
|
|
|
{
|
|
|
struct batadv_priv *bat_priv;
|
|
|
- struct batadv_hard_iface *primary_if;
|
|
|
+ struct batadv_hard_iface *primary_if = NULL;
|
|
|
struct batadv_frag_packet frag_header;
|
|
|
struct sk_buff *skb_fragment;
|
|
|
unsigned mtu = neigh_node->if_incoming->net_dev->mtu;
|
|
|
unsigned header_size = sizeof(frag_header);
|
|
|
unsigned max_fragment_size, max_packet_size;
|
|
|
+ bool ret = false;
|
|
|
|
|
|
/* To avoid merge and refragmentation at next-hops we never send
|
|
|
* fragments larger than BATADV_FRAG_MAX_FRAG_SIZE
|
|
|
@@ -483,7 +484,11 @@ bool batadv_frag_send_packet(struct sk_buff *skb,
|
|
|
skb->len + ETH_HLEN);
|
|
|
batadv_send_skb_packet(skb, neigh_node->if_incoming, neigh_node->addr);
|
|
|
|
|
|
- return true;
|
|
|
+ ret = true;
|
|
|
+
|
|
|
out_err:
|
|
|
- return false;
|
|
|
+ if (primary_if)
|
|
|
+ batadv_hardif_free_ref(primary_if);
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|