]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop queue-4.19/devlink-disallow-reload-operation-during-device-cleanup.patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Nov 2019 17:24:34 +0000 (18:24 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Nov 2019 17:24:34 +0000 (18:24 +0100)
and another 4.19 patch

queue-4.19/devlink-disallow-reload-operation-during-device-cleanup.patch [deleted file]
queue-4.19/net-devlink-select-net_devlink-from-drivers.patch [deleted file]
queue-4.19/series

diff --git a/queue-4.19/devlink-disallow-reload-operation-during-device-cleanup.patch b/queue-4.19/devlink-disallow-reload-operation-during-device-cleanup.patch
deleted file mode 100644 (file)
index 90db138..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-From foo@baz Mon 18 Nov 2019 09:16:01 AM CET
-From: Jiri Pirko <jiri@mellanox.com>
-Date: Sat, 9 Nov 2019 11:29:46 +0100
-Subject: devlink: disallow reload operation during device cleanup
-
-From: Jiri Pirko <jiri@mellanox.com>
-
-[ Upstream commit 5a508a254bed9a2e36a5fb96c9065532a6bf1e9c ]
-
-There is a race between driver code that does setup/cleanup of device
-and devlink reload operation that in some drivers works with the same
-code. Use after free could we easily obtained by running:
-
-while true; do
-        echo "0000:00:10.0" >/sys/bus/pci/drivers/mlxsw_spectrum2/bind
-        devlink dev reload pci/0000:00:10.0 &
-        echo "0000:00:10.0" >/sys/bus/pci/drivers/mlxsw_spectrum2/unbind
-done
-
-Fix this by enabling reload only after setup of device is complete and
-disabling it at the beginning of the cleanup process.
-
-Reported-by: Ido Schimmel <idosch@mellanox.com>
-Fixes: 2d8dc5bbf4e7 ("devlink: Add support for reload")
-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/mlx4/main.c  |    3 ++
- drivers/net/ethernet/mellanox/mlxsw/core.c |    4 ++
- drivers/net/netdevsim/netdev.c             |    5 +++
- include/net/devlink.h                      |    3 ++
- net/core/devlink.c                         |   39 ++++++++++++++++++++++++++++-
- 5 files changed, 53 insertions(+), 1 deletion(-)
-
---- a/drivers/net/ethernet/mellanox/mlx4/main.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
-@@ -3982,6 +3982,7 @@ static int mlx4_init_one(struct pci_dev
-       if (ret)
-               goto err_params_unregister;
-+      devlink_reload_enable(devlink);
-       pci_save_state(pdev);
-       return 0;
-@@ -4093,6 +4094,8 @@ static void mlx4_remove_one(struct pci_d
-       struct devlink *devlink = priv_to_devlink(priv);
-       int active_vfs = 0;
-+      devlink_reload_disable(devlink);
-+
-       if (mlx4_is_slave(dev))
-               persist->interface_state |= MLX4_INTERFACE_STATE_NOWAIT;
---- a/drivers/net/ethernet/mellanox/mlxsw/core.c
-+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
-@@ -1054,6 +1054,8 @@ int mlxsw_core_bus_device_register(const
-               if (err)
-                       goto err_driver_init;
-       }
-+      if (!reload)
-+              devlink_reload_enable(devlink);
-       return 0;
-@@ -1088,6 +1090,8 @@ void mlxsw_core_bus_device_unregister(st
- {
-       struct devlink *devlink = priv_to_devlink(mlxsw_core);
-+      if (!reload)
-+              devlink_reload_disable(devlink);
-       if (mlxsw_core->reload_fail) {
-               if (!reload)
-                       /* Only the parts that were not de-initialized in the
---- a/drivers/net/netdevsim/netdev.c
-+++ b/drivers/net/netdevsim/netdev.c
-@@ -23,6 +23,7 @@
- #include <net/pkt_cls.h>
- #include <net/rtnetlink.h>
- #include <net/switchdev.h>
-+#include <net/devlink.h>
- #include "netdevsim.h"
-@@ -221,6 +222,8 @@ static int nsim_init(struct net_device *
-               goto err_unreg_dev;
-       nsim_ipsec_init(ns);
-+      if (ns->devlink)
-+              devlink_reload_enable(ns->devlink);
-       return 0;
-@@ -243,6 +246,8 @@ static void nsim_uninit(struct net_devic
- {
-       struct netdevsim *ns = netdev_priv(dev);
-+      if (ns->devlink)
-+              devlink_reload_disable(ns->devlink);
-       nsim_ipsec_teardown(ns);
-       nsim_devlink_teardown(ns);
-       debugfs_remove_recursive(ns->ddir);
---- a/include/net/devlink.h
-+++ b/include/net/devlink.h
-@@ -35,6 +35,7 @@ struct devlink {
-       struct device *dev;
-       possible_net_t _net;
-       struct mutex lock;
-+      u8 reload_enabled:1;
-       char priv[0] __aligned(NETDEV_ALIGN);
- };
-@@ -477,6 +478,8 @@ struct ib_device;
- struct devlink *devlink_alloc(const struct devlink_ops *ops, size_t priv_size);
- int devlink_register(struct devlink *devlink, struct device *dev);
- void devlink_unregister(struct devlink *devlink);
-+void devlink_reload_enable(struct devlink *devlink);
-+void devlink_reload_disable(struct devlink *devlink);
- void devlink_free(struct devlink *devlink);
- int devlink_port_register(struct devlink *devlink,
-                         struct devlink_port *devlink_port,
---- a/net/core/devlink.c
-+++ b/net/core/devlink.c
-@@ -2643,7 +2643,7 @@ static int devlink_nl_cmd_reload(struct
-       struct devlink *devlink = info->user_ptr[0];
-       int err;
--      if (!devlink->ops->reload)
-+      if (!devlink->ops->reload || !devlink->reload_enabled)
-               return -EOPNOTSUPP;
-       err = devlink_resources_validate(devlink, NULL, info);
-@@ -3889,6 +3889,8 @@ EXPORT_SYMBOL_GPL(devlink_register);
- void devlink_unregister(struct devlink *devlink)
- {
-       mutex_lock(&devlink_mutex);
-+      WARN_ON(devlink->ops->reload &&
-+              devlink->reload_enabled);
-       devlink_notify(devlink, DEVLINK_CMD_DEL);
-       list_del(&devlink->list);
-       mutex_unlock(&devlink_mutex);
-@@ -3896,6 +3898,41 @@ void devlink_unregister(struct devlink *
- EXPORT_SYMBOL_GPL(devlink_unregister);
- /**
-+ *    devlink_reload_enable - Enable reload of devlink instance
-+ *
-+ *    @devlink: devlink
-+ *
-+ *    Should be called at end of device initialization
-+ *    process when reload operation is supported.
-+ */
-+void devlink_reload_enable(struct devlink *devlink)
-+{
-+      mutex_lock(&devlink_mutex);
-+      devlink->reload_enabled = true;
-+      mutex_unlock(&devlink_mutex);
-+}
-+EXPORT_SYMBOL_GPL(devlink_reload_enable);
-+
-+/**
-+ *    devlink_reload_disable - Disable reload of devlink instance
-+ *
-+ *    @devlink: devlink
-+ *
-+ *    Should be called at the beginning of device cleanup
-+ *    process when reload operation is supported.
-+ */
-+void devlink_reload_disable(struct devlink *devlink)
-+{
-+      mutex_lock(&devlink_mutex);
-+      /* Mutex is taken which ensures that no reload operation is in
-+       * progress while setting up forbidded flag.
-+       */
-+      devlink->reload_enabled = false;
-+      mutex_unlock(&devlink_mutex);
-+}
-+EXPORT_SYMBOL_GPL(devlink_reload_disable);
-+
-+/**
-  *    devlink_free - Free devlink instance resources
-  *
-  *    @devlink: devlink
diff --git a/queue-4.19/net-devlink-select-net_devlink-from-drivers.patch b/queue-4.19/net-devlink-select-net_devlink-from-drivers.patch
deleted file mode 100644 (file)
index 8b7b424..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-From f6b19b354d50c5ae46ad66b5273f92e563fbc847 Mon Sep 17 00:00:00 2001
-From: Jiri Pirko <jiri@mellanox.com>
-Date: Sun, 24 Mar 2019 11:14:38 +0100
-Subject: net: devlink: select NET_DEVLINK from drivers
-
-From: Jiri Pirko <jiri@mellanox.com>
-
-commit f6b19b354d50c5ae46ad66b5273f92e563fbc847 upstream.
-
-Some drivers are becoming more dependent on NET_DEVLINK being selected
-in configuration. With upcoming compat functions, the behavior would be
-wrong in case devlink was not compiled in. So make the drivers select
-NET_DEVLINK and rely on the functions being there, not just stubs.
-
-Signed-off-by: Jiri Pirko <jiri@mellanox.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-[only backport 3 select NET_DEVLINK lines of original patch, to resolve
- build issues - gregkh]
-Cc: Guenter Roeck <linux@roeck-us.net>
-Cc: Chris Paterson <Chris.Paterson2@renesas.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/net/ethernet/mellanox/mlx4/Kconfig      |    1 +
- drivers/net/ethernet/mellanox/mlx5/core/Kconfig |    2 +-
- drivers/net/ethernet/mellanox/mlxsw/Kconfig     |    2 +-
- 3 files changed, 3 insertions(+), 2 deletions(-)
-
---- a/drivers/net/ethernet/mellanox/mlx4/Kconfig
-+++ b/drivers/net/ethernet/mellanox/mlx4/Kconfig
-@@ -27,6 +27,7 @@ config MLX4_EN_DCB
- config MLX4_CORE
-       tristate
-       depends on PCI
-+      select NET_DEVLINK
-       default n
- config MLX4_DEBUG
---- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
-+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
-@@ -4,8 +4,8 @@
- config MLX5_CORE
-       tristate "Mellanox 5th generation network adapters (ConnectX series) core driver"
--      depends on MAY_USE_DEVLINK
-       depends on PCI
-+      select NET_DEVLINK
-       imply PTP_1588_CLOCK
-       imply VXLAN
-       imply MLXFW
---- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig
-+++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
-@@ -4,7 +4,7 @@
- config MLXSW_CORE
-       tristate "Mellanox Technologies Switch ASICs support"
--      depends on MAY_USE_DEVLINK
-+      select NET_DEVLINK
-       ---help---
-         This driver supports Mellanox Technologies Switch ASICs family.
index 2bc732b7660e830705da2461e1af2c4b3fc45c32..bcb9fc4c51cefb75dff816c213e07a7c2f93cf4b 100644 (file)
@@ -6,8 +6,6 @@ ipmr-fix-skb-headroom-in-ipmr_get_route.patch
 net-gemini-add-missed-free_netdev.patch
 net-usb-qmi_wwan-add-support-for-foxconn-t77w968-lte-modules.patch
 slip-fix-memory-leak-in-slip_open-error-path.patch
-devlink-disallow-reload-operation-during-device-cleanup.patch
-net-devlink-select-net_devlink-from-drivers.patch
 alsa-usb-audio-fix-missing-error-check-at-mixer-resolution-test.patch
 alsa-usb-audio-not-submit-urb-for-stopped-endpoint.patch
 alsa-usb-audio-fix-incorrect-null-check-in-create_yamaha_midi_quirk.patch