diff options
| author | David S. Miller <davem@davemloft.net> | 2017-02-08 21:56:38 +0300 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-02-08 21:56:38 +0300 |
| commit | 9538132a9f3cb8ed1590bec2b32650f4d30dd688 (patch) | |
| tree | ffe0e21da8d4ae2b435561434cc391970196e42b /include | |
| parent | d7426c69a1942b2b9b709bf66b944ff09f561484 (diff) | |
| parent | 57031eb794906eea4e1c7b31dc1e2429c0af0c66 (diff) | |
| download | linux-9538132a9f3cb8ed1590bec2b32650f4d30dd688.tar.xz | |
Merge branch 'net-header-length-truncation'
Willem de Bruijn says:
====================
net: Fixes for header length truncation
Packets should not enter the stack with truncated link layer headers
and link layer headers should always be stored in the skb linear
segment.
Patch 1 ensures the first for PF_PACKET sockets
Patch 2 ensures the second for PF_PACKET GSO sockets without tx_ring
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/netdevice.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 70ad0291d517..27914672602d 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1511,6 +1511,7 @@ enum netdev_priv_flags { * @max_mtu: Interface Maximum MTU value * @type: Interface hardware type * @hard_header_len: Maximum hardware header length. + * @min_header_len: Minimum hardware header length * * @needed_headroom: Extra headroom the hardware may need, but not in all * cases can this be guaranteed @@ -1728,6 +1729,7 @@ struct net_device { unsigned int max_mtu; unsigned short type; unsigned short hard_header_len; + unsigned short min_header_len; unsigned short needed_headroom; unsigned short needed_tailroom; @@ -2694,6 +2696,8 @@ static inline bool dev_validate_header(const struct net_device *dev, { if (likely(len >= dev->hard_header_len)) return true; + if (len < dev->min_header_len) + return false; if (capable(CAP_SYS_RAWIO)) { memset(ll_header + len, 0, dev->hard_header_len - len); |
