• D
    packet: fix tpacket_snd max frame len · 5cfb4c8d
    Daniel Borkmann 提交于
    Since it's introduction in commit 69e3c75f ("net: TX_RING and
    packet mmap"), TX_RING could be used from SOCK_DGRAM and SOCK_RAW
    side. When used with SOCK_DGRAM only, the size_max > dev->mtu +
    reserve check should have reserve as 0, but currently, this is
    unconditionally set (in it's original form as dev->hard_header_len).
    
    I think this is not correct since tpacket_fill_skb() would then
    take dev->mtu and dev->hard_header_len into account for SOCK_DGRAM,
    the extra VLAN_HLEN could be possible in both cases. Presumably, the
    reserve code was copied from packet_snd(), but later on missed the
    check. Make it similar as we have it in packet_snd().
    
    Fixes: 69e3c75f ("net: TX_RING and packet mmap")
    Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: NWillem de Bruijn <willemb@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    5cfb4c8d
af_packet.c 103.6 KB