diff options
Diffstat (limited to 'include/linux/netdevice.h')
-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 93a6a2c66d15..4035bbe40971 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1399,6 +1399,7 @@ enum netdev_priv_flags { | |||
1399 | * @mtu: Interface MTU value | 1399 | * @mtu: Interface MTU value |
1400 | * @type: Interface hardware type | 1400 | * @type: Interface hardware type |
1401 | * @hard_header_len: Maximum hardware header length. | 1401 | * @hard_header_len: Maximum hardware header length. |
1402 | * @min_header_len: Minimum hardware header length | ||
1402 | * | 1403 | * |
1403 | * @needed_headroom: Extra headroom the hardware may need, but not in all | 1404 | * @needed_headroom: Extra headroom the hardware may need, but not in all |
1404 | * cases can this be guaranteed | 1405 | * cases can this be guaranteed |
@@ -1619,6 +1620,7 @@ struct net_device { | |||
1619 | unsigned int mtu; | 1620 | unsigned int mtu; |
1620 | unsigned short type; | 1621 | unsigned short type; |
1621 | unsigned short hard_header_len; | 1622 | unsigned short hard_header_len; |
1623 | unsigned short min_header_len; | ||
1622 | 1624 | ||
1623 | unsigned short needed_headroom; | 1625 | unsigned short needed_headroom; |
1624 | unsigned short needed_tailroom; | 1626 | unsigned short needed_tailroom; |
@@ -2541,6 +2543,8 @@ static inline bool dev_validate_header(const struct net_device *dev, | |||
2541 | { | 2543 | { |
2542 | if (likely(len >= dev->hard_header_len)) | 2544 | if (likely(len >= dev->hard_header_len)) |
2543 | return true; | 2545 | return true; |
2546 | if (len < dev->min_header_len) | ||
2547 | return false; | ||
2544 | 2548 | ||
2545 | if (capable(CAP_SYS_RAWIO)) { | 2549 | if (capable(CAP_SYS_RAWIO)) { |
2546 | memset(ll_header + len, 0, dev->hard_header_len - len); | 2550 | memset(ll_header + len, 0, dev->hard_header_len - len); |