Le ven. 6 nov. 2026 à 05:18, Willem de Bruijn <[email protected]> a écrit : > > Eric Dumazet wrote: > > virtio_net_l3_start() decides from skb->dev->type whether the frame > > starts with an Ethernet header. tun decides it from the IFF_TAP and > > IFF_TUN flags, and TUNSETLINK can set the type of a down tun device > > to any value, without changing the flags. > > > > On an IFF_TAP device set to ARPHRD_NONE, the outer protocol checks > > look at the IP header at the network header (ETH_HLEN), and never read > > the Ethernet header. eth_type_trans() then sets skb->protocol from an > > unchecked h_proto, for instance ETH_P_NSH, and the packet can reach > > the skb_under_panic() addressed by the previous patch. > > > > On an IFF_TUN device set to ARPHRD_ETHER, the checks validate an > > Ethernet header that tun then treats as the start of the L3 header. > > > > Checking in tun that the device type matches the framing is not > > enough: the type is read again later, and a concurrent TUNSETLINK can > > change it in between, since tun_get_user() only drops packets of a > > down device after these checks. > > > > Add a has_eth argument to virtio_net_hdr_tnl_to_skb(), passed down to > > virtio_net_l3_start(), so the device type is no longer used: > > > > - virtio_net always receives Ethernet frames. > > - tun_get_user() passes whether the device is IFF_TAP. > > - tun_xdp_one() always calls eth_type_trans() on its frames. > > > > Fixes: 288f30435132 ("tun: enable gso over UDP tunnel support.") > > Reported-by: Sashiko <[email protected]> > > Closes: https://lore.kernel.org/netdev/[email protected]/ > > Link: > > https://lore.kernel.org/netdev/[email protected]/ > > Signed-off-by: Eric Dumazet <[email protected]> > > Reviewed-by: Willem de Bruijn <[email protected]> > > Makes sense, and easier to review stand-alone. > > But if having to respin, squash into 1/8? > > Also, to avoid having to respin too often could (now that they're > public and archived) leave the self-tests for a later series.
Thanks Willem, v4 does both: this patch is squashed into the first one, and the selftests are dropped from the series. I will send them separately, with the fixes Sashiko found in patches 7 and 8. pw-bot: cr
