From: Greg Kroah-Hartman Date: Mon, 14 Mar 2022 11:25:06 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v4.9.307~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4fd9895e67077c8c65f0a7a6f266423c662bbb67;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: revert-net-dsa-mv88e6xxx-flush-switchdev-fdb-workqueue-before-removing-vlan.patch --- diff --git a/queue-5.15/revert-net-dsa-mv88e6xxx-flush-switchdev-fdb-workqueue-before-removing-vlan.patch b/queue-5.15/revert-net-dsa-mv88e6xxx-flush-switchdev-fdb-workqueue-before-removing-vlan.patch new file mode 100644 index 00000000000..b4eb8f330b8 --- /dev/null +++ b/queue-5.15/revert-net-dsa-mv88e6xxx-flush-switchdev-fdb-workqueue-before-removing-vlan.patch @@ -0,0 +1,86 @@ +From foo@baz Mon Mar 14 12:24:14 PM CET 2022 +From: Vladimir Oltean +Date: Mon, 14 Mar 2022 01:24:59 +0200 +Subject: Revert "net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN" + +From: Vladimir Oltean + +This reverts commit 2566a89b9e163b2fcd104d6005e0149f197b8a48 which is +commit a2614140dc0f467a83aa3bb4b6ee2d6480a76202 upstream. + +The above change depends on upstream commit 0faf890fc519 ("net: dsa: +drop rtnl_lock from dsa_slave_switchdev_event_work"), which is not +present in linux-5.15.y. Without that change, waiting for the switchdev +workqueue causes deadlocks on the rtnl_mutex. + +Backporting the dependency commit isn't trivial/desirable, since it +requires that the following dependencies of the dependency are also +backported: + +df405910ab9f net: dsa: sja1105: wait for dynamic config command completion on writes too +eb016afd83a9 net: dsa: sja1105: serialize access to the dynamic config interface +2468346c5677 net: mscc: ocelot: serialize access to the MAC table +f7eb4a1c0864 net: dsa: b53: serialize access to the ARL table +cf231b436f7c net: dsa: lantiq_gswip: serialize access to the PCE registers +338a3a4745aa net: dsa: introduce locking for the address lists on CPU and DSA ports + +and then this bugfix on top: + +8940e6b669ca ("net: dsa: avoid call to __dev_set_promiscuity() while rtnl_mutex isn't held") + +Reported-by: Daniel Suchy +Signed-off-by: Vladimir Oltean +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/dsa/mv88e6xxx/chip.c | 7 ------- + include/net/dsa.h | 1 - + net/dsa/dsa.c | 1 - + net/dsa/dsa_priv.h | 1 + + 4 files changed, 1 insertion(+), 9 deletions(-) + +--- a/drivers/net/dsa/mv88e6xxx/chip.c ++++ b/drivers/net/dsa/mv88e6xxx/chip.c +@@ -2291,13 +2291,6 @@ static int mv88e6xxx_port_vlan_del(struc + if (!mv88e6xxx_max_vid(chip)) + return -EOPNOTSUPP; + +- /* The ATU removal procedure needs the FID to be mapped in the VTU, +- * but FDB deletion runs concurrently with VLAN deletion. Flush the DSA +- * switchdev workqueue to ensure that all FDB entries are deleted +- * before we remove the VLAN. +- */ +- dsa_flush_workqueue(); +- + mv88e6xxx_reg_lock(chip); + + err = mv88e6xxx_port_get_pvid(chip, port, &pvid); +--- a/include/net/dsa.h ++++ b/include/net/dsa.h +@@ -1056,7 +1056,6 @@ void dsa_unregister_switch(struct dsa_sw + int dsa_register_switch(struct dsa_switch *ds); + void dsa_switch_shutdown(struct dsa_switch *ds); + struct dsa_switch *dsa_switch_find(int tree_index, int sw_index); +-void dsa_flush_workqueue(void); + #ifdef CONFIG_PM_SLEEP + int dsa_switch_suspend(struct dsa_switch *ds); + int dsa_switch_resume(struct dsa_switch *ds); +--- a/net/dsa/dsa.c ++++ b/net/dsa/dsa.c +@@ -349,7 +349,6 @@ void dsa_flush_workqueue(void) + { + flush_workqueue(dsa_owq); + } +-EXPORT_SYMBOL_GPL(dsa_flush_workqueue); + + int dsa_devlink_param_get(struct devlink *dl, u32 id, + struct devlink_param_gset_ctx *ctx) +--- a/net/dsa/dsa_priv.h ++++ b/net/dsa/dsa_priv.h +@@ -170,6 +170,7 @@ void dsa_tag_driver_put(const struct dsa + const struct dsa_device_ops *dsa_find_tagger_by_name(const char *buf); + + bool dsa_schedule_work(struct work_struct *work); ++void dsa_flush_workqueue(void); + const char *dsa_tag_protocol_to_str(const struct dsa_device_ops *ops); + + static inline int dsa_tag_protocol_overhead(const struct dsa_device_ops *ops) diff --git a/queue-5.15/series b/queue-5.15/series index 8452a6cad4d..940405f1e5b 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -107,3 +107,4 @@ btrfs-make-send-work-with-concurrent-block-group-relocation.patch drm-i915-workaround-broken-bios-dbuf-configuration-on-tgl-rkl.patch riscv-dts-k210-fix-broken-irqs-on-hart1.patch block-drop-unused-includes-in-linux-genhd.h.patch +revert-net-dsa-mv88e6xxx-flush-switchdev-fdb-workqueue-before-removing-vlan.patch