mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
batman-adv: Consume skb in receive handlers
Receiving functions in Linux consume the supplied skbuff. Doing the same in the batadv_rx_handler functions makes the behavior more similar to the rest of the Linux network code. Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
This commit is contained in:
committed by
Simon Wunderlich
parent
1ad5bcb2a0
commit
b91a2543b4
@@ -1819,11 +1819,11 @@ static int batadv_nc_recv_coded_packet(struct sk_buff *skb,
|
||||
|
||||
/* Check if network coding is enabled */
|
||||
if (!atomic_read(&bat_priv->network_coding))
|
||||
return NET_RX_DROP;
|
||||
goto free_skb;
|
||||
|
||||
/* Make sure we can access (and remove) header */
|
||||
if (unlikely(!pskb_may_pull(skb, hdr_size)))
|
||||
return NET_RX_DROP;
|
||||
goto free_skb;
|
||||
|
||||
coded_packet = (struct batadv_coded_packet *)skb->data;
|
||||
ethhdr = eth_hdr(skb);
|
||||
@@ -1831,7 +1831,7 @@ static int batadv_nc_recv_coded_packet(struct sk_buff *skb,
|
||||
/* Verify frame is destined for us */
|
||||
if (!batadv_is_my_mac(bat_priv, ethhdr->h_dest) &&
|
||||
!batadv_is_my_mac(bat_priv, coded_packet->second_dest))
|
||||
return NET_RX_DROP;
|
||||
goto free_skb;
|
||||
|
||||
/* Update stat counter */
|
||||
if (batadv_is_my_mac(bat_priv, coded_packet->second_dest))
|
||||
@@ -1841,7 +1841,7 @@ static int batadv_nc_recv_coded_packet(struct sk_buff *skb,
|
||||
coded_packet);
|
||||
if (!nc_packet) {
|
||||
batadv_inc_counter(bat_priv, BATADV_CNT_NC_DECODE_FAILED);
|
||||
return NET_RX_DROP;
|
||||
goto free_skb;
|
||||
}
|
||||
|
||||
/* Make skb's linear, because decoding accesses the entire buffer */
|
||||
@@ -1867,6 +1867,9 @@ static int batadv_nc_recv_coded_packet(struct sk_buff *skb,
|
||||
|
||||
free_nc_packet:
|
||||
batadv_nc_packet_free(nc_packet, true);
|
||||
free_skb:
|
||||
kfree_skb(skb);
|
||||
|
||||
return NET_RX_DROP;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user