On Friday 26 February 2016 14:18:54 Andreas Pape wrote:
@@ -896,6 +898,19 @@ int batadv_recv_unicast_packet(struct sk_buff *skb, } }
/* If this is a unicast packet from another backgone gw,
* drop it.
*/
orig_addr = ethhdr->h_source;
orig_node = batadv_orig_hash_find(bat_priv, orig_addr);
if (batadv_bla_is_backbone_gw(skb, orig_node, hdr_size)) {
batadv_dbg(BATADV_DBG_BLA, bat_priv,
"Dropped unicast pkt received from another backbone gw %pM.\n",
orig_addr);
return NET_RX_DROP;
}
The orig_node was previously assigned via batadv_orig_hash_find. But this batadv_orig_hash_find already increased the reference pointer for orig_node. So we would now have an imbalance at the end of the function.
Kind regards, Sven