]> git.baikalelectronics.ru Git - kernel.git/commitdiff
macvlan: enforce a consistent minimal mtu
authorEric Dumazet <edumazet@google.com>
Fri, 7 Oct 2022 22:57:43 +0000 (15:57 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 25 Nov 2022 16:42:21 +0000 (17:42 +0100)
commit 301b4e5f7978f36e5fbcf6513ab9a6ea901b4147 upstream.

macvlan should enforce a minimal mtu of 68, even at link creation.

This patch avoids the current behavior (which could lead to crashes
in ipv6 stack if the link is brought up)

$ ip link add macvlan1 link eno1 mtu 8 type macvlan  # This should fail !
$ ip link sh dev macvlan1
5: macvlan1@eno1: <BROADCAST,MULTICAST> mtu 8 qdisc noop
    state DOWN mode DEFAULT group default qlen 1000
    link/ether 02:47:6c:24:74:82 brd ff:ff:ff:ff:ff:ff
$ ip link set macvlan1 mtu 67
Error: mtu less than device minimum.
$ ip link set macvlan1 mtu 68
$ ip link set macvlan1 mtu 8
Error: mtu less than device minimum.

Fixes: b8d55c187b83 ("net: use core MTU range checking in core net infra")
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/macvlan.c

index 29c70d5e3926ae014e7798e07cc01037466d46fc..545d1814535046da9a9c6b2214447ed3768e85e9 100644 (file)
@@ -1166,7 +1166,7 @@ void macvlan_common_setup(struct net_device *dev)
 {
        ether_setup(dev);
 
-       dev->min_mtu            = 0;
+       /* ether_setup() has set dev->min_mtu to ETH_MIN_MTU. */
        dev->max_mtu            = ETH_MAX_MTU;
        dev->priv_flags        &= ~IFF_TX_SKB_SHARING;
        netif_keep_dst(dev);