aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Ahern <dsa@cumulusnetworks.com>2017-01-10 15:22:25 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-01-15 13:41:36 +0100
commit70e05a9f2f4fa19e5fad71ed990dd72f41638a1a (patch)
tree4af09f821c1c123e55a09c317b7aee76b29d75e2
parentc177d491a9483a29fa6c58943e39a2f0a1c7b802 (diff)
net: vrf: do not allow table id 0
[ Upstream commit 24c63bbc18e25d5d8439422aa5fd2d66390b88eb ] Frank reported that vrf devices can be created with a table id of 0. This breaks many of the run time table id checks and should not be allowed. Detect this condition at create time and fail with EINVAL. Fixes: 193125dbd8eb ("net: Introduce VRF device driver") Reported-by: Frank Kellermann <frank.kellermann@atos.net> Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/net/vrf.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index bc795b8f2997..d6b619667f1a 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -925,6 +925,8 @@ static int vrf_newlink(struct net *src_net, struct net_device *dev,
return -EINVAL;
vrf->tb_id = nla_get_u32(data[IFLA_VRF_TABLE]);
+ if (vrf->tb_id == RT_TABLE_UNSPEC)
+ return -EINVAL;
dev->priv_flags |= IFF_L3MDEV_MASTER;