From cc65cc218cd27ae0d176b0f9da375e4c0e716aa9 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 16 Jul 2023 12:27:27 +0200 Subject: [PATCH] 6.1-stable patches added patches: arm-dts-qcom-ipq4019-fix-broken-nand-controller-properties-override.patch arm-orion5x-fix-d2net-gpio-initialization.patch asoc-mediatek-mt8173-fix-irq-error-path.patch asoc-mediatek-mt8173-fix-snd_soc_component_initialize-error-path.patch btrfs-add-block-group-tree-to-lockdep-classes.patch btrfs-add-handling-for-raid1c23-dup-to-btrfs_reduce_alloc_profile.patch btrfs-bail-out-reclaim-process-if-filesystem-is-read-only.patch btrfs-delete-unused-bgs-while-reclaiming-bgs.patch btrfs-do-not-bug_on-on-tree-mod-log-failure-at-__btrfs_cow_block.patch btrfs-fix-extent-buffer-leak-after-tree-mod-log-failure-at-split_node.patch btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch btrfs-move-out-now-unused-bg-from-the-reclaim-list.patch btrfs-reinsert-bgs-failed-to-reclaim.patch leds-trigger-netdev-recheck-netdev_led_mode_linkup-on-dev-rename.patch regulator-tps65219-fix-matching-interrupts-for-their-regulators.patch --- ...-nand-controller-properties-override.patch | 82 ++++++++++ ...rion5x-fix-d2net-gpio-initialization.patch | 55 +++++++ ...c-mediatek-mt8173-fix-irq-error-path.patch | 53 +++++++ ..._soc_component_initialize-error-path.patch | 42 ++++++ ...-block-group-tree-to-lockdep-classes.patch | 41 +++++ ...23-dup-to-btrfs_reduce_alloc_profile.patch | 140 ++++++++++++++++++ ...m-process-if-filesystem-is-read-only.patch | 47 ++++++ ...lete-unused-bgs-while-reclaiming-bgs.patch | 63 ++++++++ ...mod-log-failure-at-__btrfs_cow_block.patch | 44 ++++++ ...r-tree-mod-log-failure-at-split_node.patch | 36 +++++ ...a-root-from-the-dirty-cow-roots-list.patch | 84 +++++++++++ ...-now-unused-bg-from-the-reclaim-list.patch | 47 ++++++ ...btrfs-reinsert-bgs-failed-to-reclaim.patch | 37 +++++ ...netdev_led_mode_linkup-on-dev-rename.patch | 39 +++++ ...hing-interrupts-for-their-regulators.patch | 61 ++++++++ queue-6.1/series | 15 ++ 16 files changed, 886 insertions(+) create mode 100644 queue-6.1/arm-dts-qcom-ipq4019-fix-broken-nand-controller-properties-override.patch create mode 100644 queue-6.1/arm-orion5x-fix-d2net-gpio-initialization.patch create mode 100644 queue-6.1/asoc-mediatek-mt8173-fix-irq-error-path.patch create mode 100644 queue-6.1/asoc-mediatek-mt8173-fix-snd_soc_component_initialize-error-path.patch create mode 100644 queue-6.1/btrfs-add-block-group-tree-to-lockdep-classes.patch create mode 100644 queue-6.1/btrfs-add-handling-for-raid1c23-dup-to-btrfs_reduce_alloc_profile.patch create mode 100644 queue-6.1/btrfs-bail-out-reclaim-process-if-filesystem-is-read-only.patch create mode 100644 queue-6.1/btrfs-delete-unused-bgs-while-reclaiming-bgs.patch create mode 100644 queue-6.1/btrfs-do-not-bug_on-on-tree-mod-log-failure-at-__btrfs_cow_block.patch create mode 100644 queue-6.1/btrfs-fix-extent-buffer-leak-after-tree-mod-log-failure-at-split_node.patch create mode 100644 queue-6.1/btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch create mode 100644 queue-6.1/btrfs-move-out-now-unused-bg-from-the-reclaim-list.patch create mode 100644 queue-6.1/btrfs-reinsert-bgs-failed-to-reclaim.patch create mode 100644 queue-6.1/leds-trigger-netdev-recheck-netdev_led_mode_linkup-on-dev-rename.patch create mode 100644 queue-6.1/regulator-tps65219-fix-matching-interrupts-for-their-regulators.patch diff --git a/queue-6.1/arm-dts-qcom-ipq4019-fix-broken-nand-controller-properties-override.patch b/queue-6.1/arm-dts-qcom-ipq4019-fix-broken-nand-controller-properties-override.patch new file mode 100644 index 00000000000..6d55bbd50e5 --- /dev/null +++ b/queue-6.1/arm-dts-qcom-ipq4019-fix-broken-nand-controller-properties-override.patch @@ -0,0 +1,82 @@ +From edcbdd57de499305e2a3737d4a73fe387f71d84c Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Thu, 20 Apr 2023 09:28:11 +0200 +Subject: ARM: dts: qcom: ipq4019: fix broken NAND controller properties override + +From: Krzysztof Kozlowski + +commit edcbdd57de499305e2a3737d4a73fe387f71d84c upstream. + +After renaming NAND controller node name from "qpic-nand" to +"nand-controller", the board DTS/DTSI also have to be updated: + + Warning (unit_address_vs_reg): /soc/qpic-nand@79b0000: node has a unit name, but no reg or ranges property + +Cc: +Fixes: 9e1e00f18afc ("ARM: dts: qcom: Fix node name for NAND controller node") +Signed-off-by: Krzysztof Kozlowski +Reviewed-by: Konrad Dybcio +Reviewed-by: Manivannan Sadhasivam +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230420072811.36947-1-krzysztof.kozlowski@linaro.org +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c1.dts | 8 ++++---- + arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1.dtsi | 10 +++++----- + arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1.dtsi | 12 ++++++------ + 3 files changed, 15 insertions(+), 15 deletions(-) + +--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c1.dts ++++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c1.dts +@@ -11,9 +11,9 @@ + dma-controller@7984000 { + status = "okay"; + }; +- +- qpic-nand@79b0000 { +- status = "okay"; +- }; + }; + }; ++ ++&nand { ++ status = "okay"; ++}; +--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1.dtsi ++++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1.dtsi +@@ -102,10 +102,10 @@ + status = "okay"; + perst-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + }; +- +- qpic-nand@79b0000 { +- pinctrl-0 = <&nand_pins>; +- pinctrl-names = "default"; +- }; + }; + }; ++ ++&nand { ++ pinctrl-0 = <&nand_pins>; ++ pinctrl-names = "default"; ++}; +--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1.dtsi ++++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1.dtsi +@@ -65,11 +65,11 @@ + dma-controller@7984000 { + status = "okay"; + }; +- +- qpic-nand@79b0000 { +- pinctrl-0 = <&nand_pins>; +- pinctrl-names = "default"; +- status = "okay"; +- }; + }; + }; ++ ++&nand { ++ pinctrl-0 = <&nand_pins>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; diff --git a/queue-6.1/arm-orion5x-fix-d2net-gpio-initialization.patch b/queue-6.1/arm-orion5x-fix-d2net-gpio-initialization.patch new file mode 100644 index 00000000000..1531582503b --- /dev/null +++ b/queue-6.1/arm-orion5x-fix-d2net-gpio-initialization.patch @@ -0,0 +1,55 @@ +From f8ef1233939495c405a9faa4bd1ae7d3f581bae4 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Tue, 16 May 2023 17:31:05 +0200 +Subject: ARM: orion5x: fix d2net gpio initialization + +From: Arnd Bergmann + +commit f8ef1233939495c405a9faa4bd1ae7d3f581bae4 upstream. + +The DT version of this board has a custom file with the gpio +device. However, it does nothing because the d2net_init() +has no caller or prototype: + +arch/arm/mach-orion5x/board-d2net.c:101:13: error: no previous prototype for 'd2net_init' + +Call it from the board-dt file as intended. + +Fixes: 94b0bd366e36 ("ARM: orion5x: convert d2net to Device Tree") +Reviewed-by: Andrew Lunn +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20230516153109.514251-10-arnd@kernel.org +Signed-off-by: Arnd Bergmann +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm/mach-orion5x/board-dt.c | 3 +++ + arch/arm/mach-orion5x/common.h | 6 ++++++ + 2 files changed, 9 insertions(+) + +--- a/arch/arm/mach-orion5x/board-dt.c ++++ b/arch/arm/mach-orion5x/board-dt.c +@@ -60,6 +60,9 @@ static void __init orion5x_dt_init(void) + if (of_machine_is_compatible("maxtor,shared-storage-2")) + mss2_init(); + ++ if (of_machine_is_compatible("lacie,d2-network")) ++ d2net_init(); ++ + of_platform_default_populate(NULL, orion5x_auxdata_lookup, NULL); + } + +--- a/arch/arm/mach-orion5x/common.h ++++ b/arch/arm/mach-orion5x/common.h +@@ -75,6 +75,12 @@ extern void mss2_init(void); + static inline void mss2_init(void) {} + #endif + ++#ifdef CONFIG_MACH_D2NET_DT ++void d2net_init(void); ++#else ++static inline void d2net_init(void) {} ++#endif ++ + /***************************************************************************** + * Helpers to access Orion registers + ****************************************************************************/ diff --git a/queue-6.1/asoc-mediatek-mt8173-fix-irq-error-path.patch b/queue-6.1/asoc-mediatek-mt8173-fix-irq-error-path.patch new file mode 100644 index 00000000000..2ed1e7f029f --- /dev/null +++ b/queue-6.1/asoc-mediatek-mt8173-fix-irq-error-path.patch @@ -0,0 +1,53 @@ +From f9c058d14f4fe23ef523a7ff73734d51c151683c Mon Sep 17 00:00:00 2001 +From: Ricardo Ribalda Delgado +Date: Mon, 12 Jun 2023 11:05:32 +0200 +Subject: ASoC: mediatek: mt8173: Fix irq error path + +From: Ricardo Ribalda Delgado + +commit f9c058d14f4fe23ef523a7ff73734d51c151683c upstream. + +After reordering the irq probe, the error path was not properly done. +Lets fix it. + +Reported-by: Dan Carpenter +Cc: stable@kernel.org +Fixes: 4cbb264d4e91 ("ASoC: mediatek: mt8173: Enable IRQ when pdata is ready") +Signed-off-by: Ricardo Ribalda Delgado +Reviewed-by: AngeloGioacchino Del Regno +Link: https://lore.kernel.org/r/20230612-mt8173-fixup-v2-2-432aa99ce24d@chromium.org +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c ++++ b/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c +@@ -1070,6 +1070,10 @@ static int mt8173_afe_pcm_dev_probe(stru + + afe->dev = &pdev->dev; + ++ irq_id = platform_get_irq(pdev, 0); ++ if (irq_id <= 0) ++ return irq_id < 0 ? irq_id : -ENXIO; ++ + afe->base_addr = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(afe->base_addr)) + return PTR_ERR(afe->base_addr); +@@ -1175,14 +1179,11 @@ static int mt8173_afe_pcm_dev_probe(stru + if (ret) + goto err_cleanup_components; + +- irq_id = platform_get_irq(pdev, 0); +- if (irq_id <= 0) +- return irq_id < 0 ? irq_id : -ENXIO; + ret = devm_request_irq(afe->dev, irq_id, mt8173_afe_irq_handler, + 0, "Afe_ISR_Handle", (void *)afe); + if (ret) { + dev_err(afe->dev, "could not request_irq\n"); +- goto err_pm_disable; ++ goto err_cleanup_components; + } + + dev_info(&pdev->dev, "MT8173 AFE driver initialized.\n"); diff --git a/queue-6.1/asoc-mediatek-mt8173-fix-snd_soc_component_initialize-error-path.patch b/queue-6.1/asoc-mediatek-mt8173-fix-snd_soc_component_initialize-error-path.patch new file mode 100644 index 00000000000..2126100e223 --- /dev/null +++ b/queue-6.1/asoc-mediatek-mt8173-fix-snd_soc_component_initialize-error-path.patch @@ -0,0 +1,42 @@ +From a46d37012a5be1737393b8f82fd35665e4556eee Mon Sep 17 00:00:00 2001 +From: Ricardo Ribalda Delgado +Date: Mon, 12 Jun 2023 11:05:31 +0200 +Subject: ASoC: mediatek: mt8173: Fix snd_soc_component_initialize error path + +From: Ricardo Ribalda Delgado + +commit a46d37012a5be1737393b8f82fd35665e4556eee upstream. + +If the second component fails to initialize, cleanup the first on. + +Reported-by: Dan Carpenter +Cc: stable@kernel.org +Fixes: f1b5bf07365d ("ASoC: mt2701/mt8173: replace platform to component") +Signed-off-by: Ricardo Ribalda Delgado +Reviewed-by: AngeloGioacchino Del Regno +Link: https://lore.kernel.org/r/20230612-mt8173-fixup-v2-1-432aa99ce24d@chromium.org +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c ++++ b/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c +@@ -1160,14 +1160,14 @@ static int mt8173_afe_pcm_dev_probe(stru + comp_hdmi = devm_kzalloc(&pdev->dev, sizeof(*comp_hdmi), GFP_KERNEL); + if (!comp_hdmi) { + ret = -ENOMEM; +- goto err_pm_disable; ++ goto err_cleanup_components; + } + + ret = snd_soc_component_initialize(comp_hdmi, + &mt8173_afe_hdmi_dai_component, + &pdev->dev); + if (ret) +- goto err_pm_disable; ++ goto err_cleanup_components; + + #ifdef CONFIG_DEBUG_FS + comp_hdmi->debugfs_prefix = "hdmi"; diff --git a/queue-6.1/btrfs-add-block-group-tree-to-lockdep-classes.patch b/queue-6.1/btrfs-add-block-group-tree-to-lockdep-classes.patch new file mode 100644 index 00000000000..80d090d541d --- /dev/null +++ b/queue-6.1/btrfs-add-block-group-tree-to-lockdep-classes.patch @@ -0,0 +1,41 @@ +From 1a1b0e729d227f9f758f7b5f1c997e874e94156e Mon Sep 17 00:00:00 2001 +From: David Sterba +Date: Thu, 1 Jun 2023 00:33:01 +0200 +Subject: btrfs: add block-group tree to lockdep classes + +From: David Sterba + +commit 1a1b0e729d227f9f758f7b5f1c997e874e94156e upstream. + +The block group tree was not present among the lockdep classes. We could +get potentially lockdep warnings but so far none has been seen, also +because block-group-tree is a relatively new feature. + +CC: stable@vger.kernel.org # 6.1+ +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/locking.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/fs/btrfs/locking.c ++++ b/fs/btrfs/locking.c +@@ -56,8 +56,8 @@ + + static struct btrfs_lockdep_keyset { + u64 id; /* root objectid */ +- /* Longest entry: btrfs-free-space-00 */ +- char names[BTRFS_MAX_LEVEL][20]; ++ /* Longest entry: btrfs-block-group-00 */ ++ char names[BTRFS_MAX_LEVEL][24]; + struct lock_class_key keys[BTRFS_MAX_LEVEL]; + } btrfs_lockdep_keysets[] = { + { .id = BTRFS_ROOT_TREE_OBJECTID, DEFINE_NAME("root") }, +@@ -71,6 +71,7 @@ static struct btrfs_lockdep_keyset { + { .id = BTRFS_DATA_RELOC_TREE_OBJECTID, DEFINE_NAME("dreloc") }, + { .id = BTRFS_UUID_TREE_OBJECTID, DEFINE_NAME("uuid") }, + { .id = BTRFS_FREE_SPACE_TREE_OBJECTID, DEFINE_NAME("free-space") }, ++ { .id = BTRFS_BLOCK_GROUP_TREE_OBJECTID, DEFINE_NAME("block-group") }, + { .id = 0, DEFINE_NAME("tree") }, + }; + diff --git a/queue-6.1/btrfs-add-handling-for-raid1c23-dup-to-btrfs_reduce_alloc_profile.patch b/queue-6.1/btrfs-add-handling-for-raid1c23-dup-to-btrfs_reduce_alloc_profile.patch new file mode 100644 index 00000000000..41c7382913f --- /dev/null +++ b/queue-6.1/btrfs-add-handling-for-raid1c23-dup-to-btrfs_reduce_alloc_profile.patch @@ -0,0 +1,140 @@ +From 160fe8f6fdb13da6111677be6263e5d65e875987 Mon Sep 17 00:00:00 2001 +From: Matt Corallo +Date: Mon, 5 Jun 2023 16:49:45 -0700 +Subject: btrfs: add handling for RAID1C23/DUP to btrfs_reduce_alloc_profile + +From: Matt Corallo + +commit 160fe8f6fdb13da6111677be6263e5d65e875987 upstream. + +Callers of `btrfs_reduce_alloc_profile` expect it to return exactly +one allocation profile flag, and failing to do so may ultimately +result in a WARN_ON and remount-ro when allocating new blocks, like +the below transaction abort on 6.1. + +`btrfs_reduce_alloc_profile` has two ways of determining the profile, +first it checks if a conversion balance is currently running and +uses the profile we're converting to. If no balance is currently +running, it returns the max-redundancy profile which at least one +block in the selected block group has. + +This works by simply checking each known allocation profile bit in +redundancy order. However, `btrfs_reduce_alloc_profile` has not been +updated as new flags have been added - first with the `DUP` profile +and later with the RAID1C34 profiles. + +Because of the way it checks, if we have blocks with different +profiles and at least one is known, that profile will be selected. +However, if none are known we may return a flag set with multiple +allocation profiles set. + +This is currently only possible when a balance from one of the three +unhandled profiles to another of the unhandled profiles is canceled +after allocating at least one block using the new profile. + +In that case, a transaction abort like the below will occur and the +filesystem will need to be mounted with -o skip_balance to get it +mounted rw again (but the balance cannot be resumed without a +similar abort). + + [770.648] ------------[ cut here ]------------ + [770.648] BTRFS: Transaction aborted (error -22) + [770.648] WARNING: CPU: 43 PID: 1159593 at fs/btrfs/extent-tree.c:4122 find_free_extent+0x1d94/0x1e00 [btrfs] + [770.648] CPU: 43 PID: 1159593 Comm: btrfs Tainted: G W 6.1.0-0.deb11.7-powerpc64le #1 Debian 6.1.20-2~bpo11+1a~test + [770.648] Hardware name: T2P9D01 REV 1.00 POWER9 0x4e1202 opal:skiboot-bc106a0 PowerNV + [770.648] NIP: c00800000f6784fc LR: c00800000f6784f8 CTR: c000000000d746c0 + [770.648] REGS: c000200089afe9a0 TRAP: 0700 Tainted: G W (6.1.0-0.deb11.7-powerpc64le Debian 6.1.20-2~bpo11+1a~test) + [770.648] MSR: 9000000002029033 CR: 28848282 XER: 20040000 + [770.648] CFAR: c000000000135110 IRQMASK: 0 + GPR00: c00800000f6784f8 c000200089afec40 c00800000f7ea800 0000000000000026 + GPR04: 00000001004820c2 c000200089afea00 c000200089afe9f8 0000000000000027 + GPR08: c000200ffbfe7f98 c000000002127f90 ffffffffffffffd8 0000000026d6a6e8 + GPR12: 0000000028848282 c000200fff7f3800 5deadbeef0000122 c00000002269d000 + GPR16: c0002008c7797c40 c000200089afef17 0000000000000000 0000000000000000 + GPR20: 0000000000000000 0000000000000001 c000200008bc5a98 0000000000000001 + GPR24: 0000000000000000 c0000003c73088d0 c000200089afef17 c000000016d3a800 + GPR28: c0000003c7308800 c00000002269d000 ffffffffffffffea 0000000000000001 + [770.648] NIP [c00800000f6784fc] find_free_extent+0x1d94/0x1e00 [btrfs] + [770.648] LR [c00800000f6784f8] find_free_extent+0x1d90/0x1e00 [btrfs] + [770.648] Call Trace: + [770.648] [c000200089afec40] [c00800000f6784f8] find_free_extent+0x1d90/0x1e00 [btrfs] (unreliable) + [770.648] [c000200089afed30] [c00800000f681398] btrfs_reserve_extent+0x1a0/0x2f0 [btrfs] + [770.648] [c000200089afeea0] [c00800000f681bf0] btrfs_alloc_tree_block+0x108/0x670 [btrfs] + [770.648] [c000200089afeff0] [c00800000f66bd68] __btrfs_cow_block+0x170/0x850 [btrfs] + [770.648] [c000200089aff100] [c00800000f66c58c] btrfs_cow_block+0x144/0x288 [btrfs] + [770.648] [c000200089aff1b0] [c00800000f67113c] btrfs_search_slot+0x6b4/0xcb0 [btrfs] + [770.648] [c000200089aff2a0] [c00800000f679f60] lookup_inline_extent_backref+0x128/0x7c0 [btrfs] + [770.648] [c000200089aff3b0] [c00800000f67b338] lookup_extent_backref+0x70/0x190 [btrfs] + [770.648] [c000200089aff470] [c00800000f67b54c] __btrfs_free_extent+0xf4/0x1490 [btrfs] + [770.648] [c000200089aff5a0] [c00800000f67d770] __btrfs_run_delayed_refs+0x328/0x1530 [btrfs] + [770.648] [c000200089aff740] [c00800000f67ea2c] btrfs_run_delayed_refs+0xb4/0x3e0 [btrfs] + [770.648] [c000200089aff800] [c00800000f699aa4] btrfs_commit_transaction+0x8c/0x12b0 [btrfs] + [770.648] [c000200089aff8f0] [c00800000f6dc628] reset_balance_state+0x1c0/0x290 [btrfs] + [770.648] [c000200089aff9a0] [c00800000f6e2f7c] btrfs_balance+0x1164/0x1500 [btrfs] + [770.648] [c000200089affb40] [c00800000f6f8e4c] btrfs_ioctl+0x2b54/0x3100 [btrfs] + [770.648] [c000200089affc80] [c00000000053be14] sys_ioctl+0x794/0x1310 + [770.648] [c000200089affd70] [c00000000002af98] system_call_exception+0x138/0x250 + [770.648] [c000200089affe10] [c00000000000c654] system_call_common+0xf4/0x258 + [770.648] --- interrupt: c00 at 0x7fff94126800 + [770.648] NIP: 00007fff94126800 LR: 0000000107e0b594 CTR: 0000000000000000 + [770.648] REGS: c000200089affe80 TRAP: 0c00 Tainted: G W (6.1.0-0.deb11.7-powerpc64le Debian 6.1.20-2~bpo11+1a~test) + [770.648] MSR: 900000000000d033 CR: 24002848 XER: 00000000 + [770.648] IRQMASK: 0 + GPR00: 0000000000000036 00007fffc9439da0 00007fff94217100 0000000000000003 + GPR04: 00000000c4009420 00007fffc9439ee8 0000000000000000 0000000000000000 + GPR08: 00000000803c7416 0000000000000000 0000000000000000 0000000000000000 + GPR12: 0000000000000000 00007fff9467d120 0000000107e64c9c 0000000107e64d0a + GPR16: 0000000107e64d06 0000000107e64cf1 0000000107e64cc4 0000000107e64c73 + GPR20: 0000000107e64c31 0000000107e64bf1 0000000107e64be7 0000000000000000 + GPR24: 0000000000000000 00007fffc9439ee0 0000000000000003 0000000000000001 + GPR28: 00007fffc943f713 0000000000000000 00007fffc9439ee8 0000000000000000 + [770.648] NIP [00007fff94126800] 0x7fff94126800 + [770.648] LR [0000000107e0b594] 0x107e0b594 + [770.648] --- interrupt: c00 + [770.648] Instruction dump: + [770.648] 3b00ffe4 e8898828 481175f5 60000000 4bfff4fc 3be00000 4bfff570 3d220000 + [770.648] 7fc4f378 e8698830 4811cd95 e8410018 <0fe00000> f9c10060 f9e10068 fa010070 + [770.648] ---[ end trace 0000000000000000 ]--- + [770.648] BTRFS: error (device dm-2: state A) in find_free_extent_update_loop:4122: errno=-22 unknown + [770.648] BTRFS info (device dm-2: state EA): forced readonly + [770.648] BTRFS: error (device dm-2: state EA) in __btrfs_free_extent:3070: errno=-22 unknown + [770.648] BTRFS error (device dm-2: state EA): failed to run delayed ref for logical 17838685708288 num_bytes 24576 type 184 action 2 ref_mod 1: -22 + [770.648] BTRFS: error (device dm-2: state EA) in btrfs_run_delayed_refs:2144: errno=-22 unknown + [770.648] BTRFS: error (device dm-2: state EA) in reset_balance_state:3599: errno=-22 unknown + +Fixes: 47e6f7423b91 ("btrfs: add support for 3-copy replication (raid1c3)") +Fixes: 8d6fac0087e5 ("btrfs: add support for 4-copy replication (raid1c4)") +CC: stable@vger.kernel.org # 5.10+ +Signed-off-by: Matt Corallo +Reviewed-by: David Sterba +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/block-group.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/block-group.c ++++ b/fs/btrfs/block-group.c +@@ -79,14 +79,21 @@ static u64 btrfs_reduce_alloc_profile(st + } + allowed &= flags; + +- if (allowed & BTRFS_BLOCK_GROUP_RAID6) ++ /* Select the highest-redundancy RAID level. */ ++ if (allowed & BTRFS_BLOCK_GROUP_RAID1C4) ++ allowed = BTRFS_BLOCK_GROUP_RAID1C4; ++ else if (allowed & BTRFS_BLOCK_GROUP_RAID6) + allowed = BTRFS_BLOCK_GROUP_RAID6; ++ else if (allowed & BTRFS_BLOCK_GROUP_RAID1C3) ++ allowed = BTRFS_BLOCK_GROUP_RAID1C3; + else if (allowed & BTRFS_BLOCK_GROUP_RAID5) + allowed = BTRFS_BLOCK_GROUP_RAID5; + else if (allowed & BTRFS_BLOCK_GROUP_RAID10) + allowed = BTRFS_BLOCK_GROUP_RAID10; + else if (allowed & BTRFS_BLOCK_GROUP_RAID1) + allowed = BTRFS_BLOCK_GROUP_RAID1; ++ else if (allowed & BTRFS_BLOCK_GROUP_DUP) ++ allowed = BTRFS_BLOCK_GROUP_DUP; + else if (allowed & BTRFS_BLOCK_GROUP_RAID0) + allowed = BTRFS_BLOCK_GROUP_RAID0; + diff --git a/queue-6.1/btrfs-bail-out-reclaim-process-if-filesystem-is-read-only.patch b/queue-6.1/btrfs-bail-out-reclaim-process-if-filesystem-is-read-only.patch new file mode 100644 index 00000000000..5bb91d86d96 --- /dev/null +++ b/queue-6.1/btrfs-bail-out-reclaim-process-if-filesystem-is-read-only.patch @@ -0,0 +1,47 @@ +From 93463ff7b54626f8276c0bd3d3f968fbf8d5d380 Mon Sep 17 00:00:00 2001 +From: Naohiro Aota +Date: Tue, 6 Jun 2023 14:36:35 +0900 +Subject: btrfs: bail out reclaim process if filesystem is read-only + +From: Naohiro Aota + +commit 93463ff7b54626f8276c0bd3d3f968fbf8d5d380 upstream. + +When a filesystem is read-only, we cannot reclaim a block group as it +cannot rewrite the data. Just bail out in that case. + +Note that it can drop block groups in this case. As we did +sb_start_write(), read-only filesystem means we got a fatal error and +forced read-only. There is no chance to reclaim them again. + +Fixes: 18bb8bbf13c1 ("btrfs: zoned: automatically reclaim zones") +CC: stable@vger.kernel.org # 5.15+ +Reviewed-by: Filipe Manana +Reviewed-by: Johannes Thumshirn +Signed-off-by: Naohiro Aota +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/block-group.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +--- a/fs/btrfs/block-group.c ++++ b/fs/btrfs/block-group.c +@@ -1603,8 +1603,15 @@ void btrfs_reclaim_bgs_work(struct work_ + } + spin_unlock(&bg->lock); + +- /* Get out fast, in case we're unmounting the filesystem */ +- if (btrfs_fs_closing(fs_info)) { ++ /* ++ * Get out fast, in case we're read-only or unmounting the ++ * filesystem. It is OK to drop block groups from the list even ++ * for the read-only case. As we did sb_start_write(), ++ * "mount -o remount,ro" won't happen and read-only filesystem ++ * means it is forced read-only due to a fatal error. So, it ++ * never gets back to read-write to let us reclaim again. ++ */ ++ if (btrfs_need_cleaner_sleep(fs_info)) { + up_write(&space_info->groups_sem); + goto next; + } diff --git a/queue-6.1/btrfs-delete-unused-bgs-while-reclaiming-bgs.patch b/queue-6.1/btrfs-delete-unused-bgs-while-reclaiming-bgs.patch new file mode 100644 index 00000000000..e4a0a4471f2 --- /dev/null +++ b/queue-6.1/btrfs-delete-unused-bgs-while-reclaiming-bgs.patch @@ -0,0 +1,63 @@ +From 3ed01616bad6c7e3de196676b542ae3df8058592 Mon Sep 17 00:00:00 2001 +From: Naohiro Aota +Date: Tue, 6 Jun 2023 14:36:33 +0900 +Subject: btrfs: delete unused BGs while reclaiming BGs + +From: Naohiro Aota + +commit 3ed01616bad6c7e3de196676b542ae3df8058592 upstream. + +The reclaiming process only starts after the filesystem volumes are +allocated to a certain level (75% by default). Thus, the list of +reclaiming target block groups can build up so huge at the time the +reclaim process kicks in. On a test run, there were over 1000 BGs in the +reclaim list. + +As the reclaim involves rewriting the data, it takes really long time to +reclaim the BGs. While the reclaim is running, btrfs_delete_unused_bgs() +won't proceed because the reclaim side is holding +fs_info->reclaim_bgs_lock. As a result, we will have a large number of +unused BGs kept in the unused list. On my test run, I got 1057 unused BGs. + +Since deleting a block group is relatively easy and fast work, we can call +btrfs_delete_unused_bgs() while it reclaims BGs, to avoid building up +unused BGs. + +Fixes: 18bb8bbf13c1 ("btrfs: zoned: automatically reclaim zones") +CC: stable@vger.kernel.org # 5.15+ +Reviewed-by: Filipe Manana +Reviewed-by: Johannes Thumshirn +Signed-off-by: Naohiro Aota +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/block-group.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +--- a/fs/btrfs/block-group.c ++++ b/fs/btrfs/block-group.c +@@ -1636,10 +1636,24 @@ void btrfs_reclaim_bgs_work(struct work_ + + next: + btrfs_put_block_group(bg); ++ ++ mutex_unlock(&fs_info->reclaim_bgs_lock); ++ /* ++ * Reclaiming all the block groups in the list can take really ++ * long. Prioritize cleaning up unused block groups. ++ */ ++ btrfs_delete_unused_bgs(fs_info); ++ /* ++ * If we are interrupted by a balance, we can just bail out. The ++ * cleaner thread restart again if necessary. ++ */ ++ if (!mutex_trylock(&fs_info->reclaim_bgs_lock)) ++ goto end; + spin_lock(&fs_info->unused_bgs_lock); + } + spin_unlock(&fs_info->unused_bgs_lock); + mutex_unlock(&fs_info->reclaim_bgs_lock); ++end: + btrfs_exclop_finish(fs_info); + sb_end_write(fs_info->sb); + } diff --git a/queue-6.1/btrfs-do-not-bug_on-on-tree-mod-log-failure-at-__btrfs_cow_block.patch b/queue-6.1/btrfs-do-not-bug_on-on-tree-mod-log-failure-at-__btrfs_cow_block.patch new file mode 100644 index 00000000000..dad6c96590c --- /dev/null +++ b/queue-6.1/btrfs-do-not-bug_on-on-tree-mod-log-failure-at-__btrfs_cow_block.patch @@ -0,0 +1,44 @@ +From 40b0a749388517de244643c09bdbb98f7dcb6ef1 Mon Sep 17 00:00:00 2001 +From: Filipe Manana +Date: Thu, 8 Jun 2023 11:27:40 +0100 +Subject: btrfs: do not BUG_ON() on tree mod log failure at __btrfs_cow_block() + +From: Filipe Manana + +commit 40b0a749388517de244643c09bdbb98f7dcb6ef1 upstream. + +At __btrfs_cow_block(), instead of doing a BUG_ON() in case we fail to +record a tree mod log root insertion operation, do a transaction abort +instead. There's really no need for the BUG_ON(), we can properly +release all resources in this context and turn the filesystem to RO mode +and in an error state instead. + +CC: stable@vger.kernel.org # 5.4+ +Reviewed-by: Qu Wenruo +Signed-off-by: Filipe Manana +Reviewed-by: David Sterba +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/ctree.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +--- a/fs/btrfs/ctree.c ++++ b/fs/btrfs/ctree.c +@@ -475,9 +475,14 @@ static noinline int __btrfs_cow_block(st + btrfs_header_backref_rev(buf) < BTRFS_MIXED_BACKREF_REV) + parent_start = buf->start; + +- atomic_inc(&cow->refs); + ret = btrfs_tree_mod_log_insert_root(root->node, cow, true); +- BUG_ON(ret < 0); ++ if (ret < 0) { ++ btrfs_tree_unlock(cow); ++ free_extent_buffer(cow); ++ btrfs_abort_transaction(trans, ret); ++ return ret; ++ } ++ atomic_inc(&cow->refs); + rcu_assign_pointer(root->node, cow); + + btrfs_free_tree_block(trans, btrfs_root_id(root), buf, diff --git a/queue-6.1/btrfs-fix-extent-buffer-leak-after-tree-mod-log-failure-at-split_node.patch b/queue-6.1/btrfs-fix-extent-buffer-leak-after-tree-mod-log-failure-at-split_node.patch new file mode 100644 index 00000000000..bdfb12261c4 --- /dev/null +++ b/queue-6.1/btrfs-fix-extent-buffer-leak-after-tree-mod-log-failure-at-split_node.patch @@ -0,0 +1,36 @@ +From ede600e497b1461d06d22a7d17703d9096868bc3 Mon Sep 17 00:00:00 2001 +From: Filipe Manana +Date: Thu, 8 Jun 2023 11:27:38 +0100 +Subject: btrfs: fix extent buffer leak after tree mod log failure at split_node() + +From: Filipe Manana + +commit ede600e497b1461d06d22a7d17703d9096868bc3 upstream. + +At split_node(), if we fail to log the tree mod log copy operation, we +return without unlocking the split extent buffer we just allocated and +without decrementing the reference we own on it. Fix this by unlocking +it and decrementing the ref count before returning. + +Fixes: 5de865eebb83 ("Btrfs: fix tree mod logging") +CC: stable@vger.kernel.org # 5.4+ +Reviewed-by: Qu Wenruo +Signed-off-by: Filipe Manana +Reviewed-by: David Sterba +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/ctree.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/btrfs/ctree.c ++++ b/fs/btrfs/ctree.c +@@ -2862,6 +2862,8 @@ static noinline int split_node(struct bt + + ret = btrfs_tree_mod_log_eb_copy(split, c, 0, mid, c_nritems - mid); + if (ret) { ++ btrfs_tree_unlock(split); ++ free_extent_buffer(split); + btrfs_abort_transaction(trans, ret); + return ret; + } diff --git a/queue-6.1/btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch b/queue-6.1/btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch new file mode 100644 index 00000000000..43d63d23150 --- /dev/null +++ b/queue-6.1/btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch @@ -0,0 +1,84 @@ +From b31cb5a6eb7a48b0a7bfdf06832b1fd5088d8c79 Mon Sep 17 00:00:00 2001 +From: Filipe Manana +Date: Mon, 19 Jun 2023 17:21:47 +0100 +Subject: btrfs: fix race when deleting quota root from the dirty cow roots list + +From: Filipe Manana + +commit b31cb5a6eb7a48b0a7bfdf06832b1fd5088d8c79 upstream. + +When disabling quotas we are deleting the quota root from the list +fs_info->dirty_cowonly_roots without taking the lock that protects it, +which is struct btrfs_fs_info::trans_lock. This unsynchronized list +manipulation may cause chaos if there's another concurrent manipulation +of this list, such as when adding a root to it with +ctree.c:add_root_to_dirty_list(). + +This can result in all sorts of weird failures caused by a race, such as +the following crash: + + [337571.278245] general protection fault, probably for non-canonical address 0xdead000000000108: 0000 [#1] PREEMPT SMP PTI + [337571.278933] CPU: 1 PID: 115447 Comm: btrfs Tainted: G W 6.4.0-rc6-btrfs-next-134+ #1 + [337571.279153] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014 + [337571.279572] RIP: 0010:commit_cowonly_roots+0x11f/0x250 [btrfs] + [337571.279928] Code: 85 38 06 00 (...) + [337571.280363] RSP: 0018:ffff9f63446efba0 EFLAGS: 00010206 + [337571.280582] RAX: ffff942d98ec2638 RBX: ffff9430b82b4c30 RCX: 0000000449e1c000 + [337571.280798] RDX: dead000000000100 RSI: ffff9430021e4900 RDI: 0000000000036070 + [337571.281015] RBP: ffff942d98ec2000 R08: ffff942d98ec2000 R09: 000000000000015b + [337571.281254] R10: 0000000000000009 R11: 0000000000000001 R12: ffff942fe8fbf600 + [337571.281476] R13: ffff942dabe23040 R14: ffff942dabe20800 R15: ffff942d92cf3b48 + [337571.281723] FS: 00007f478adb7340(0000) GS:ffff94349fa40000(0000) knlGS:0000000000000000 + [337571.281950] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 + [337571.282184] CR2: 00007f478ab9a3d5 CR3: 000000001e02c001 CR4: 0000000000370ee0 + [337571.282416] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 + [337571.282647] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 + [337571.282874] Call Trace: + [337571.283101] + [337571.283327] ? __die_body+0x1b/0x60 + [337571.283570] ? die_addr+0x39/0x60 + [337571.283796] ? exc_general_protection+0x22e/0x430 + [337571.284022] ? asm_exc_general_protection+0x22/0x30 + [337571.284251] ? commit_cowonly_roots+0x11f/0x250 [btrfs] + [337571.284531] btrfs_commit_transaction+0x42e/0xf90 [btrfs] + [337571.284803] ? _raw_spin_unlock+0x15/0x30 + [337571.285031] ? release_extent_buffer+0x103/0x130 [btrfs] + [337571.285305] reset_balance_state+0x152/0x1b0 [btrfs] + [337571.285578] btrfs_balance+0xa50/0x11e0 [btrfs] + [337571.285864] ? __kmem_cache_alloc_node+0x14a/0x410 + [337571.286086] btrfs_ioctl+0x249a/0x3320 [btrfs] + [337571.286358] ? mod_objcg_state+0xd2/0x360 + [337571.286577] ? refill_obj_stock+0xb0/0x160 + [337571.286798] ? seq_release+0x25/0x30 + [337571.287016] ? __rseq_handle_notify_resume+0x3ba/0x4b0 + [337571.287235] ? percpu_counter_add_batch+0x2e/0xa0 + [337571.287455] ? __x64_sys_ioctl+0x88/0xc0 + [337571.287675] __x64_sys_ioctl+0x88/0xc0 + [337571.287901] do_syscall_64+0x38/0x90 + [337571.288126] entry_SYSCALL_64_after_hwframe+0x72/0xdc + [337571.288352] RIP: 0033:0x7f478aaffe9b + +So fix this by locking struct btrfs_fs_info::trans_lock before deleting +the quota root from that list. + +Fixes: bed92eae26cc ("Btrfs: qgroup implementation and prototypes") +CC: stable@vger.kernel.org # 4.14+ +Signed-off-by: Filipe Manana +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/qgroup.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/btrfs/qgroup.c ++++ b/fs/btrfs/qgroup.c +@@ -1296,7 +1296,9 @@ int btrfs_quota_disable(struct btrfs_fs_ + goto out; + } + ++ spin_lock(&fs_info->trans_lock); + list_del("a_root->dirty_list); ++ spin_unlock(&fs_info->trans_lock); + + btrfs_tree_lock(quota_root->node); + btrfs_clean_tree_block(quota_root->node); diff --git a/queue-6.1/btrfs-move-out-now-unused-bg-from-the-reclaim-list.patch b/queue-6.1/btrfs-move-out-now-unused-bg-from-the-reclaim-list.patch new file mode 100644 index 00000000000..3c2935ec081 --- /dev/null +++ b/queue-6.1/btrfs-move-out-now-unused-bg-from-the-reclaim-list.patch @@ -0,0 +1,47 @@ +From a9f189716cf15913c453299d72f69c51a9b0f86b Mon Sep 17 00:00:00 2001 +From: Naohiro Aota +Date: Tue, 6 Jun 2023 14:36:34 +0900 +Subject: btrfs: move out now unused BG from the reclaim list + +From: Naohiro Aota + +commit a9f189716cf15913c453299d72f69c51a9b0f86b upstream. + +An unused block group is easy to remove to free up space and should be +reclaimed fast. Such block group can often already be a target of the +reclaim process. As we check list_empty(&bg->bg_list), we keep it in the +reclaim list. That block group is never reclaimed until the file system +is filled e.g. up to 75%. + +Instead, we can move unused block group to the unused list and delete it +fast. + +Fixes: 18bb8bbf13c1 ("btrfs: zoned: automatically reclaim zones") +CC: stable@vger.kernel.org # 5.15+ +Reviewed-by: Filipe Manana +Reviewed-by: Johannes Thumshirn +Signed-off-by: Naohiro Aota +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/block-group.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/block-group.c ++++ b/fs/btrfs/block-group.c +@@ -1503,11 +1503,14 @@ void btrfs_mark_bg_unused(struct btrfs_b + { + struct btrfs_fs_info *fs_info = bg->fs_info; + ++ trace_btrfs_add_unused_block_group(bg); + spin_lock(&fs_info->unused_bgs_lock); + if (list_empty(&bg->bg_list)) { + btrfs_get_block_group(bg); +- trace_btrfs_add_unused_block_group(bg); + list_add_tail(&bg->bg_list, &fs_info->unused_bgs); ++ } else { ++ /* Pull out the block group from the reclaim_bgs list. */ ++ list_move_tail(&bg->bg_list, &fs_info->unused_bgs); + } + spin_unlock(&fs_info->unused_bgs_lock); + } diff --git a/queue-6.1/btrfs-reinsert-bgs-failed-to-reclaim.patch b/queue-6.1/btrfs-reinsert-bgs-failed-to-reclaim.patch new file mode 100644 index 00000000000..8b7d81bc017 --- /dev/null +++ b/queue-6.1/btrfs-reinsert-bgs-failed-to-reclaim.patch @@ -0,0 +1,37 @@ +From 7e27180994383b7c741ad87749db01e4989a02ba Mon Sep 17 00:00:00 2001 +From: Naohiro Aota +Date: Tue, 6 Jun 2023 14:36:36 +0900 +Subject: btrfs: reinsert BGs failed to reclaim + +From: Naohiro Aota + +commit 7e27180994383b7c741ad87749db01e4989a02ba upstream. + +The reclaim process can temporarily fail. For example, if the space is +getting tight, it fails to make the block group read-only. If there are no +further writes on that block group, the block group will never get back to +the reclaim list, and the BG never gets reclaimed. In a certain workload, +we can leave many such block groups never reclaimed. + +So, let's get it back to the list and give it a chance to be reclaimed. + +Fixes: 18bb8bbf13c1 ("btrfs: zoned: automatically reclaim zones") +CC: stable@vger.kernel.org # 5.15+ +Signed-off-by: Naohiro Aota +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/block-group.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/btrfs/block-group.c ++++ b/fs/btrfs/block-group.c +@@ -1642,6 +1642,8 @@ void btrfs_reclaim_bgs_work(struct work_ + } + + next: ++ if (ret) ++ btrfs_mark_bg_to_reclaim(bg); + btrfs_put_block_group(bg); + + mutex_unlock(&fs_info->reclaim_bgs_lock); diff --git a/queue-6.1/leds-trigger-netdev-recheck-netdev_led_mode_linkup-on-dev-rename.patch b/queue-6.1/leds-trigger-netdev-recheck-netdev_led_mode_linkup-on-dev-rename.patch new file mode 100644 index 00000000000..de3cc3c3e3c --- /dev/null +++ b/queue-6.1/leds-trigger-netdev-recheck-netdev_led_mode_linkup-on-dev-rename.patch @@ -0,0 +1,39 @@ +From cee4bd16c3195a701be683f7da9e88c6e11acb73 Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Wed, 19 Apr 2023 23:07:39 +0200 +Subject: leds: trigger: netdev: Recheck NETDEV_LED_MODE_LINKUP on dev rename + +From: Christian Marangi + +commit cee4bd16c3195a701be683f7da9e88c6e11acb73 upstream. + +Dev can be renamed also while up for supported device. We currently +wrongly clear the NETDEV_LED_MODE_LINKUP flag on NETDEV_CHANGENAME +event. + +Fix this by rechecking if the carrier is ok on NETDEV_CHANGENAME and +correctly set the NETDEV_LED_MODE_LINKUP bit. + +Fixes: 5f820ed52371 ("leds: trigger: netdev: fix handling on interface rename") +Cc: stable@vger.kernel.org # v5.5+ +Signed-off-by: Christian Marangi +Reviewed-by: Andrew Lunn +Signed-off-by: Lee Jones +Link: https://lore.kernel.org/r/20230419210743.3594-2-ansuelsmth@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/leds/trigger/ledtrig-netdev.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/leds/trigger/ledtrig-netdev.c ++++ b/drivers/leds/trigger/ledtrig-netdev.c +@@ -318,6 +318,9 @@ static int netdev_trig_notify(struct not + clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); + switch (evt) { + case NETDEV_CHANGENAME: ++ if (netif_carrier_ok(dev)) ++ set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); ++ fallthrough; + case NETDEV_REGISTER: + if (trigger_data->net_dev) + dev_put(trigger_data->net_dev); diff --git a/queue-6.1/regulator-tps65219-fix-matching-interrupts-for-their-regulators.patch b/queue-6.1/regulator-tps65219-fix-matching-interrupts-for-their-regulators.patch new file mode 100644 index 00000000000..614e8805549 --- /dev/null +++ b/queue-6.1/regulator-tps65219-fix-matching-interrupts-for-their-regulators.patch @@ -0,0 +1,61 @@ +From f050e56de80591fee55bedbdf5b6b998c740cd0c Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Sun, 7 May 2023 16:46:56 +0200 +Subject: regulator: tps65219: Fix matching interrupts for their regulators +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Krzysztof Kozlowski + +commit f050e56de80591fee55bedbdf5b6b998c740cd0c upstream. + +The driver's probe() first registers regulators in a loop and then in a +second loop passes them as irq data to the interrupt handlers. However +the function to get the regulator for given name +tps65219_get_rdev_by_name() was a no-op due to argument passed by value, +not pointer, thus the second loop assigned always same value - from +previous loop. The interrupts, when fired, where executed with wrong +data. Compiler also noticed it: + + drivers/regulator/tps65219-regulator.c: In function ‘tps65219_get_rdev_by_name’: + drivers/regulator/tps65219-regulator.c:292:60: error: parameter ‘dev’ set but not used [-Werror=unused-but-set-parameter] + +Fixes: c12ac5fc3e0a ("regulator: drivers: Add TI TPS65219 PMIC regulators support") +Cc: +--- + drivers/regulator/tps65219-regulator.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/regulator/tps65219-regulator.c ++++ b/drivers/regulator/tps65219-regulator.c +@@ -289,13 +289,13 @@ static irqreturn_t tps65219_regulator_ir + + static int tps65219_get_rdev_by_name(const char *regulator_name, + struct regulator_dev *rdevtbl[7], +- struct regulator_dev *dev) ++ struct regulator_dev **dev) + { + int i; + + for (i = 0; i < ARRAY_SIZE(regulators); i++) { + if (strcmp(regulator_name, regulators[i].name) == 0) { +- dev = rdevtbl[i]; ++ *dev = rdevtbl[i]; + return 0; + } + } +@@ -348,7 +348,7 @@ static int tps65219_regulator_probe(stru + irq_data[i].dev = tps->dev; + irq_data[i].type = irq_type; + +- tps65219_get_rdev_by_name(irq_type->regulator_name, rdevtbl, rdev); ++ tps65219_get_rdev_by_name(irq_type->regulator_name, rdevtbl, &rdev); + if (IS_ERR(rdev)) { + dev_err(tps->dev, "Failed to get rdev for %s\n", + irq_type->regulator_name); diff --git a/queue-6.1/series b/queue-6.1/series index 792187d2f02..8aec2a25569 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -566,3 +566,18 @@ i2c-nvidia-gpu-add-acpi-property-to-align-with-device-tree.patch i2c-nvidia-gpu-remove-ccgx-firmware-build-property.patch usb-typec-ucsi-mark-dgpus-as-device-scope.patch ipvs-increase-ip_vs_conn_tab_bits-range-for-64bit.patch +btrfs-add-handling-for-raid1c23-dup-to-btrfs_reduce_alloc_profile.patch +btrfs-delete-unused-bgs-while-reclaiming-bgs.patch +btrfs-bail-out-reclaim-process-if-filesystem-is-read-only.patch +btrfs-add-block-group-tree-to-lockdep-classes.patch +btrfs-reinsert-bgs-failed-to-reclaim.patch +btrfs-move-out-now-unused-bg-from-the-reclaim-list.patch +btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch +btrfs-fix-extent-buffer-leak-after-tree-mod-log-failure-at-split_node.patch +btrfs-do-not-bug_on-on-tree-mod-log-failure-at-__btrfs_cow_block.patch +asoc-mediatek-mt8173-fix-irq-error-path.patch +asoc-mediatek-mt8173-fix-snd_soc_component_initialize-error-path.patch +regulator-tps65219-fix-matching-interrupts-for-their-regulators.patch +arm-dts-qcom-ipq4019-fix-broken-nand-controller-properties-override.patch +arm-orion5x-fix-d2net-gpio-initialization.patch +leds-trigger-netdev-recheck-netdev_led_mode_linkup-on-dev-rename.patch -- 2.47.3