Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 64261f23 authored by Nicolas Dichtel's avatar Nicolas Dichtel Committed by David S. Miller
Browse files

dev: move skb_scrub_packet() after eth_type_trans()



skb_scrub_packet() was called before eth_type_trans() to let eth_type_trans()
set pkt_type.

In fact, we should force pkt_type to PACKET_HOST, so move the call after
eth_type_trans().

Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fc4eba58
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1691,13 +1691,13 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
		kfree_skb(skb);
		return NET_RX_DROP;
	}
	skb_scrub_packet(skb);
	skb->protocol = eth_type_trans(skb, dev);

	/* eth_type_trans() can set pkt_type.
	 * clear pkt_type _after_ calling eth_type_trans()
	 * call skb_scrub_packet() after it to clear pkt_type _after_ calling
	 * eth_type_trans().
	 */
	skb->pkt_type = PACKET_HOST;
	skb_scrub_packet(skb);

	return netif_rx(skb);
}
+4 −3
Original line number Diff line number Diff line
@@ -454,15 +454,16 @@ int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb,
	tstats->rx_bytes += skb->len;
	u64_stats_update_end(&tstats->syncp);

	if (tunnel->net != dev_net(tunnel->dev))
		skb_scrub_packet(skb);

	if (tunnel->dev->type == ARPHRD_ETHER) {
		skb->protocol = eth_type_trans(skb, tunnel->dev);
		skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN);
	} else {
		skb->dev = tunnel->dev;
	}

	if (tunnel->net != dev_net(tunnel->dev))
		skb_scrub_packet(skb);

	gro_cells_receive(&tunnel->gro_cells, skb);
	return 0;