From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Ido Schimmel <idosch@mellanox.com>,
Nogah Frankel <nogahf@mellanox.com>,
Jiri Pirko <jiri@mellanox.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 4.12 34/52] mlxsw: spectrum: Forbid linking to devices that have uppers
Date: Mon, 18 Sep 2017 11:11:28 +0200 [thread overview]
Message-ID: <20170918091021.690836785@linuxfoundation.org> (raw)
In-Reply-To: <20170918091016.620101134@linuxfoundation.org>
4.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ido Schimmel <idosch@mellanox.com>
[ Upstream commit 25cc72a33835ed8a6f53180a822cadab855852ac ]
The mlxsw driver relies on NETDEV_CHANGEUPPER events to configure the
device in case a port is enslaved to a master netdev such as bridge or
bond.
Since the driver ignores events unrelated to its ports and their
uppers, it's possible to engineer situations in which the device's data
path differs from the kernel's.
One example to such a situation is when a port is enslaved to a bond
that is already enslaved to a bridge. When the bond was enslaved the
driver ignored the event - as the bond wasn't one of its uppers - and
therefore a bridge port instance isn't created in the device.
Until such configurations are supported forbid them by checking that the
upper device doesn't have uppers of its own.
Fixes: 0d65fc13042f ("mlxsw: spectrum: Implement LAG port join/leave")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reported-by: Nogah Frankel <nogahf@mellanox.com>
Tested-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 6 ++++++
include/linux/netdevice.h | 2 ++
net/core/dev.c | 3 ++-
3 files changed, 10 insertions(+), 1 deletion(-)
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -4110,6 +4110,8 @@ static int mlxsw_sp_netdevice_port_upper
return -EINVAL;
if (!info->linking)
break;
+ if (netdev_has_any_upper_dev(upper_dev))
+ return -EINVAL;
/* HW limitation forbids to put ports to multiple bridges. */
if (netif_is_bridge_master(upper_dev) &&
!mlxsw_sp_master_bridge_check(mlxsw_sp, upper_dev))
@@ -4274,6 +4276,10 @@ static int mlxsw_sp_netdevice_bridge_eve
if (is_vlan_dev(upper_dev) &&
br_dev != mlxsw_sp->master_bridge.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;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3868,6 +3868,8 @@ int netdev_walk_all_upper_dev_rcu(struct
bool netdev_has_upper_dev_all_rcu(struct net_device *dev,
struct net_device *upper_dev);
+bool netdev_has_any_upper_dev(struct net_device *dev);
+
void *netdev_lower_get_next_private(struct net_device *dev,
struct list_head **iter);
void *netdev_lower_get_next_private_rcu(struct net_device *dev,
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5590,12 +5590,13 @@ EXPORT_SYMBOL(netdev_has_upper_dev_all_r
* Find out if a device is linked to an upper device and return true in case
* it is. The caller must hold the RTNL lock.
*/
-static bool netdev_has_any_upper_dev(struct net_device *dev)
+bool netdev_has_any_upper_dev(struct net_device *dev)
{
ASSERT_RTNL();
return !list_empty(&dev->adj_list.upper);
}
+EXPORT_SYMBOL(netdev_has_any_upper_dev);
/**
* netdev_master_upper_dev_get - Get master upper device
next prev parent reply other threads:[~2017-09-18 9:13 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-18 9:10 [PATCH 4.12 00/52] 4.12.14-stable review Greg Kroah-Hartman
2017-09-18 9:10 ` [PATCH 4.12 01/52] ipv6: accept 64k - 1 packet length in ip6_find_1stfragopt() Greg Kroah-Hartman
2017-09-18 9:10 ` [PATCH 4.12 02/52] ipv6: add rcu grace period before freeing fib6_node Greg Kroah-Hartman
2017-09-18 9:10 ` [PATCH 4.12 03/52] ipv6: fix sparse warning on rt6i_node Greg Kroah-Hartman
2017-09-18 9:10 ` [PATCH 4.12 04/52] macsec: add genl family module alias Greg Kroah-Hartman
2017-09-18 9:10 ` [PATCH 4.12 05/52] udp: on peeking bad csum, drop packets even if not at head Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 06/52] bpf: fix map value attribute for hash of maps Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 07/52] fsl/man: Inherit parent device and of_node Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 08/52] sctp: Avoid out-of-bounds reads from address storage Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 09/52] qlge: avoid memcpy buffer overflow Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 10/52] tipc: Fix tipc_sk_reinit handling of -EAGAIN Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 11/52] net: systemport: Be drop monitor friendly Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 12/52] net: bcmgenet: " Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 13/52] net: systemport: Free DMA coherent descriptors on errors Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 14/52] netvsc: fix deadlock betwen link status and removal Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 15/52] udp6: set rx_dst_cookie on rx_dst updates Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 16/52] net: mvpp2: fix the mac address used when using PPv2.2 Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 17/52] cxgb4: Fix stack out-of-bounds read due to wrong size to t4_record_mbox() Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 18/52] ipv6: set dst.obsolete when a cached route has expired Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 19/52] ipv6: do not set sk_destruct in IPV6_ADDRFORM sockopt Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 20/52] packet: Dont write vnet header beyond end of buffer Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 21/52] kcm: do not attach PF_KCM sockets to avoid deadlock Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 22/52] net: dsa: bcm_sf2: Fix number of CFP entries for BCM7278 Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 23/52] net/mlx5e: Check for qos capability in dcbnl_initialize Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 24/52] net/mlx5e: Fix DCB_CAP_ATTR_DCBX capability for DCBNL getcap Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 25/52] net/mlx5: Fix arm SRQ command for ISSI version 0 Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 26/52] net/mlx5e: Fix dangling page pointer on DMA mapping error Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 27/52] net/mlx5e: Dont override user RSS upon set channels Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 28/52] net/mlx5e: Properly resolve TC offloaded ipv6 vxlan tunnel source address Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 29/52] net/mlx5: E-Switch, Unload the representors in the correct order Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 30/52] net/mlx5e: Fix inline header size for small packets Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 31/52] net/mlx5e: Fix CQ moderation mode not set properly Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 32/52] Revert "net: phy: Correctly process PHY_HALTED in phy_stop_machine()" Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 33/52] net: fec: Allow reception of frames bigger than 1522 bytes Greg Kroah-Hartman
2017-09-18 9:11 ` Greg Kroah-Hartman [this message]
2017-09-18 9:11 ` [PATCH 4.12 35/52] bridge: switchdev: Clear forward mark when transmitting packet Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 36/52] Revert "net: use lib/percpu_counter API for fragmentation mem accounting" Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 37/52] Revert "net: fix percpu memory leaks" Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 38/52] gianfar: Fix Tx flow control deactivation Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 39/52] vhost_net: correctly check tx avail during rx busy polling Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 40/52] ip6_gre: update mtu properly in ip6gre_err Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 41/52] ipv6: fix memory leak with multiple tables during netns destruction Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 42/52] ipv6: fix typo in fib6_net_exit() Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 43/52] sctp: fix missing wake ups in some situations Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 44/52] f2fs: let fill_super handle roll-forward errors Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 45/52] f2fs: check hot_data for roll-forward recovery Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 46/52] x86/fsgsbase/64: Fully initialize FS and GS state in start_thread_common Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 47/52] x86/fsgsbase/64: Report FSBASE and GSBASE correctly in core dumps Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 48/52] x86/switch_to/64: Rewrite FS/GS switching yet again to fix AMD CPUs Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 49/52] fuse: allow server to run in different pid_ns Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 50/52] idr: remove WARN_ON_ONCE() when trying to replace negative ID Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 51/52] md/raid1/10: reset bio allocated from mempool Greg Kroah-Hartman
2017-09-18 9:11 ` [PATCH 4.12 52/52] md/raid5: release/flush io in raid5_do_work() Greg Kroah-Hartman
2017-09-18 14:22 ` [PATCH 4.12 00/52] 4.12.14-stable review Sudip Mukherjee
2017-09-19 6:34 ` Greg Kroah-Hartman
2017-09-20 12:15 ` Sudip Mukherjee
2017-09-18 19:28 ` Guenter Roeck
2017-09-18 20:14 ` Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170918091021.690836785@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=davem@davemloft.net \
--cc=idosch@mellanox.com \
--cc=jiri@mellanox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nogahf@mellanox.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).