IB/ipoib: Ensure that MTU isn't less than minimum permitted

[ Upstream commit 142a9c2876 ]

It is illegal to change MTU to a value lower than the minimum MTU
stated in ethernet spec. In addition to that we need to add 4 bytes
for encapsulation header (IPOIB_ENCAP_LEN).

Before "ifconfig ib0 mtu 0" command, succeeds while it obviously shouldn't.

Signed-off-by: Muhammad Sammar <muhammads@mellanox.com>
Reviewed-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Muhammad Sammar 2018-08-28 14:45:30 +03:00 committed by Greg Kroah-Hartman
parent 2543eeba25
commit a618cca043

View File

@ -243,7 +243,8 @@ static int ipoib_change_mtu(struct net_device *dev, int new_mtu)
return 0;
}
if (new_mtu > IPOIB_UD_MTU(priv->max_ib_mtu))
if (new_mtu < (ETH_MIN_MTU + IPOIB_ENCAP_LEN) ||
new_mtu > IPOIB_UD_MTU(priv->max_ib_mtu))
return -EINVAL;
priv->admin_mtu = new_mtu;