Explorar o código

batman-adv: avoid skb_linearise() if not needed

Whenever we want to access headers only, we do not need to linearise the whole
packet. Instead we can use pskb_may_pull()

Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Antonio Quartulli %!s(int64=13) %!d(string=hai) anos
pai
achega
8710e2613a
Modificáronse 1 ficheiros con 3 adicións e 2 borrados
  1. 3 2
      net/batman-adv/routing.c

+ 3 - 2
net/batman-adv/routing.c

@@ -916,8 +916,9 @@ static int check_unicast_ttvn(struct bat_priv *bat_priv,
 
 	/* Check whether I have to reroute the packet */
 	if (seq_before(unicast_packet->ttvn, curr_ttvn) || tt_poss_change) {
-		/* Linearize the skb before accessing it */
-		if (skb_linearize(skb) < 0)
+		/* check if there is enough data before accessing it */
+		if (pskb_may_pull(skb, sizeof(struct unicast_packet) +
+				  ETH_HLEN) < 0)
 			return 0;
 
 		ethhdr = (struct ethhdr *)(skb->data +