--- /dev/null
+From idosch@mellanox.com Tue Jul 10 15:31:57 2018
+From: Ido Schimmel <idosch@mellanox.com>
+Date: Sun, 8 Jul 2018 14:23:19 +0300
+Subject: mlxsw: spectrum: Forbid linking of VLAN devices to devices that have uppers
+To: stable@vger.kernel.org
+Cc: gregkh@linuxfoundation.org, jslaby@suse.cz, davem@davemloft.net, jiri@mellanox.com, Ido Schimmel <idosch@mellanox.com>
+Message-ID: <20180708112319.26988-1-idosch@mellanox.com>
+
+From: Ido Schimmel <idosch@mellanox.com>
+
+Jiri Slaby noticed that the backport of upstream commit 25cc72a33835
+("mlxsw: spectrum: Forbid linking to devices that have uppers") to
+kernel 4.9.y introduced the same check twice in the same function
+instead of in two different places.
+
+Fix this by relocating one of the checks to its intended place, thus
+preventing unsupported configurations as described in the original
+commit.
+
+Fixes: 73ee5a73e75f ("mlxsw: spectrum: Forbid linking to devices that have uppers")
+Signed-off-by: Ido Schimmel <idosch@mellanox.com>
+Reported-by: Jiri Slaby <jslaby@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
++++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+@@ -4187,10 +4187,6 @@ static int mlxsw_sp_netdevice_port_upper
+ if (netif_is_lag_port(dev) && is_vlan_dev(upper_dev) &&
+ !netif_is_lag_master(vlan_dev_real_dev(upper_dev)))
+ return -EINVAL;
+- if (!info->linking)
+- break;
+- if (netdev_has_any_upper_dev(upper_dev))
+- return -EINVAL;
+ break;
+ case NETDEV_CHANGEUPPER:
+ upper_dev = info->upper_dev;
+@@ -4566,6 +4562,8 @@ static int mlxsw_sp_netdevice_vport_even
+ return -EINVAL;
+ if (!info->linking)
+ break;
++ if (netdev_has_any_upper_dev(upper_dev))
++ return -EINVAL;
+ /* We can't have multiple VLAN interfaces configured on
+ * the same port and being members in the same bridge.
+ */