From: Greg Kroah-Hartman Date: Sun, 16 Jul 2023 10:25:49 +0000 (+0200) Subject: 5.4-stable patches X-Git-Tag: v6.1.39~76 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7636d75375788c5b6fe38f8ff686f246889e741c;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: arm-orion5x-fix-d2net-gpio-initialization.patch asoc-mediatek-mt8173-fix-irq-error-path.patch btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch --- diff --git a/queue-5.4/arm-orion5x-fix-d2net-gpio-initialization.patch b/queue-5.4/arm-orion5x-fix-d2net-gpio-initialization.patch new file mode 100644 index 00000000000..f0266df5c4e --- /dev/null +++ b/queue-5.4/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 +@@ -63,6 +63,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-5.4/asoc-mediatek-mt8173-fix-irq-error-path.patch b/queue-5.4/asoc-mediatek-mt8173-fix-irq-error-path.patch new file mode 100644 index 00000000000..197110d2a7e --- /dev/null +++ b/queue-5.4/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 +@@ -1073,6 +1073,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); +@@ -1148,14 +1152,11 @@ static int mt8173_afe_pcm_dev_probe(stru + if (ret) + goto err_pm_disable; + +- 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-5.4/btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch b/queue-5.4/btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch new file mode 100644 index 00000000000..f694324043f --- /dev/null +++ b/queue-5.4/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 +@@ -1189,7 +1189,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-5.4/series b/queue-5.4/series index 10a3d75fa3e..6f1ab6fda33 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -174,3 +174,6 @@ ext4-remove-ext4-locking-of-moved-directory.patch revert-f2fs-fix-potential-corruption-when-moving-a-directory.patch fs-establish-locking-order-for-unrelated-directories.patch fs-lock-moved-directories.patch +btrfs-fix-race-when-deleting-quota-root-from-the-dirty-cow-roots-list.patch +asoc-mediatek-mt8173-fix-irq-error-path.patch +arm-orion5x-fix-d2net-gpio-initialization.patch