From 9a59f1199673645dd7b332162d2a21d41f2d132d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 13 May 2023 15:53:11 +0900 Subject: [PATCH] 4.14-stable patches added patches: arm-dts-exynos-fix-wm8960-clock-name-in-itop-elite.patch arm-dts-s5pv210-correct-mipi-csis-clock-name.patch btrfs-fix-btrfs_prev_leaf-to-not-return-the-same-key-twice.patch btrfs-print-tree-parent-bytenr-must-be-aligned-to-sector-size.patch cifs-fix-pcchunk-length-type-in-smb2_copychunk_range.patch sh-math-emu-fix-macro-redefined-warning.patch sh-nmi_debug-fix-return-value-of-__setup-handler.patch --- ...-fix-wm8960-clock-name-in-itop-elite.patch | 32 +++++ ...s5pv210-correct-mipi-csis-clock-name.patch | 32 +++++ ...eaf-to-not-return-the-same-key-twice.patch | 136 ++++++++++++++++++ ...ytenr-must-be-aligned-to-sector-size.patch | 42 ++++++ ...-length-type-in-smb2_copychunk_range.patch | 34 +++++ ...-return-incorrect-build_id-size-in-e.patch | 9 +- queue-4.14/series | 7 + ...math-emu-fix-macro-redefined-warning.patch | 47 ++++++ ...-fix-return-value-of-__setup-handler.patch | 53 +++++++ 9 files changed, 385 insertions(+), 7 deletions(-) create mode 100644 queue-4.14/arm-dts-exynos-fix-wm8960-clock-name-in-itop-elite.patch create mode 100644 queue-4.14/arm-dts-s5pv210-correct-mipi-csis-clock-name.patch create mode 100644 queue-4.14/btrfs-fix-btrfs_prev_leaf-to-not-return-the-same-key-twice.patch create mode 100644 queue-4.14/btrfs-print-tree-parent-bytenr-must-be-aligned-to-sector-size.patch create mode 100644 queue-4.14/cifs-fix-pcchunk-length-type-in-smb2_copychunk_range.patch create mode 100644 queue-4.14/sh-math-emu-fix-macro-redefined-warning.patch create mode 100644 queue-4.14/sh-nmi_debug-fix-return-value-of-__setup-handler.patch diff --git a/queue-4.14/arm-dts-exynos-fix-wm8960-clock-name-in-itop-elite.patch b/queue-4.14/arm-dts-exynos-fix-wm8960-clock-name-in-itop-elite.patch new file mode 100644 index 00000000000..3a7d9086e73 --- /dev/null +++ b/queue-4.14/arm-dts-exynos-fix-wm8960-clock-name-in-itop-elite.patch @@ -0,0 +1,32 @@ +From 6c950c20da38debf1ed531e0b972bd8b53d1c11f Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Fri, 17 Feb 2023 16:06:27 +0100 +Subject: ARM: dts: exynos: fix WM8960 clock name in Itop Elite + +From: Krzysztof Kozlowski + +commit 6c950c20da38debf1ed531e0b972bd8b53d1c11f upstream. + +The WM8960 Linux driver expects the clock to be named "mclk". Otherwise +the clock will be ignored and not prepared/enabled by the driver. + +Cc: +Fixes: 339b2fb36a67 ("ARM: dts: exynos: Add TOPEET itop elite based board") +Link: https://lore.kernel.org/r/20230217150627.779764-3-krzysztof.kozlowski@linaro.org +Signed-off-by: Krzysztof Kozlowski +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm/boot/dts/exynos4412-itop-elite.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/boot/dts/exynos4412-itop-elite.dts ++++ b/arch/arm/boot/dts/exynos4412-itop-elite.dts +@@ -187,7 +187,7 @@ + compatible = "wlf,wm8960"; + reg = <0x1a>; + clocks = <&pmu_system_controller 0>; +- clock-names = "MCLK1"; ++ clock-names = "mclk"; + wlf,shared-lrclk; + #sound-dai-cells = <0>; + }; diff --git a/queue-4.14/arm-dts-s5pv210-correct-mipi-csis-clock-name.patch b/queue-4.14/arm-dts-s5pv210-correct-mipi-csis-clock-name.patch new file mode 100644 index 00000000000..a49bd2fbd72 --- /dev/null +++ b/queue-4.14/arm-dts-s5pv210-correct-mipi-csis-clock-name.patch @@ -0,0 +1,32 @@ +From 665b9459bb53b8f19bd1541567e1fe9782c83c4b Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Sun, 12 Feb 2023 19:58:18 +0100 +Subject: ARM: dts: s5pv210: correct MIPI CSIS clock name + +From: Krzysztof Kozlowski + +commit 665b9459bb53b8f19bd1541567e1fe9782c83c4b upstream. + +The Samsung S5P/Exynos MIPI CSIS bindings and Linux driver expect first +clock name to be "csis". Otherwise the driver fails to probe. + +Fixes: 94ad0f6d9278 ("ARM: dts: Add Device tree for s5pv210 SoC") +Cc: +Link: https://lore.kernel.org/r/20230212185818.43503-2-krzysztof.kozlowski@linaro.org +Signed-off-by: Krzysztof Kozlowski +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm/boot/dts/s5pv210.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/boot/dts/s5pv210.dtsi ++++ b/arch/arm/boot/dts/s5pv210.dtsi +@@ -563,7 +563,7 @@ + interrupts = <29>; + clocks = <&clocks CLK_CSIS>, + <&clocks SCLK_CSIS>; +- clock-names = "clk_csis", ++ clock-names = "csis", + "sclk_csis"; + bus-width = <4>; + status = "disabled"; diff --git a/queue-4.14/btrfs-fix-btrfs_prev_leaf-to-not-return-the-same-key-twice.patch b/queue-4.14/btrfs-fix-btrfs_prev_leaf-to-not-return-the-same-key-twice.patch new file mode 100644 index 00000000000..314371edc67 --- /dev/null +++ b/queue-4.14/btrfs-fix-btrfs_prev_leaf-to-not-return-the-same-key-twice.patch @@ -0,0 +1,136 @@ +From 6f932d4ef007d6a4ae03badcb749fbb8f49196f6 Mon Sep 17 00:00:00 2001 +From: Filipe Manana +Date: Wed, 12 Apr 2023 11:33:09 +0100 +Subject: btrfs: fix btrfs_prev_leaf() to not return the same key twice + +From: Filipe Manana + +commit 6f932d4ef007d6a4ae03badcb749fbb8f49196f6 upstream. + +A call to btrfs_prev_leaf() may end up returning a path that points to the +same item (key) again. This happens if while btrfs_prev_leaf(), after we +release the path, a concurrent insertion happens, which moves items off +from a sibling into the front of the previous leaf, and an item with the +computed previous key does not exists. + +For example, suppose we have the two following leaves: + + Leaf A + + ------------------------------------------------------------- + | ... key (300 96 10) key (300 96 15) key (300 96 16) | + ------------------------------------------------------------- + slot 20 slot 21 slot 22 + + Leaf B + + ------------------------------------------------------------- + | key (300 96 20) key (300 96 21) key (300 96 22) ... | + ------------------------------------------------------------- + slot 0 slot 1 slot 2 + +If we call btrfs_prev_leaf(), from btrfs_previous_item() for example, with +a path pointing to leaf B and slot 0 and the following happens: + +1) At btrfs_prev_leaf() we compute the previous key to search as: + (300 96 19), which is a key that does not exists in the tree; + +2) Then we call btrfs_release_path() at btrfs_prev_leaf(); + +3) Some other task inserts a key at leaf A, that sorts before the key at + slot 20, for example it has an objectid of 299. In order to make room + for the new key, the key at slot 22 is moved to the front of leaf B. + This happens at push_leaf_right(), called from split_leaf(). + + After this leaf B now looks like: + + -------------------------------------------------------------------------------- + | key (300 96 16) key (300 96 20) key (300 96 21) key (300 96 22) ... | + -------------------------------------------------------------------------------- + slot 0 slot 1 slot 2 slot 3 + +4) At btrfs_prev_leaf() we call btrfs_search_slot() for the computed + previous key: (300 96 19). Since the key does not exists, + btrfs_search_slot() returns 1 and with a path pointing to leaf B + and slot 1, the item with key (300 96 20); + +5) This makes btrfs_prev_leaf() return a path that points to slot 1 of + leaf B, the same key as before it was called, since the key at slot 0 + of leaf B (300 96 16) is less than the computed previous key, which is + (300 96 19); + +6) As a consequence btrfs_previous_item() returns a path that points again + to the item with key (300 96 20). + +For some users of btrfs_prev_leaf() or btrfs_previous_item() this may not +be functional a problem, despite not making sense to return a new path +pointing again to the same item/key. However for a caller such as +tree-log.c:log_dir_items(), this has a bad consequence, as it can result +in not logging some dir index deletions in case the directory is being +logged without holding the inode's VFS lock (logging triggered while +logging a child inode for example) - for the example scenario above, in +case the dir index keys 17, 18 and 19 were deleted in the current +transaction. + +CC: stable@vger.kernel.org # 4.14+ +Reviewed-by: Josef Bacik +Signed-off-by: Filipe Manana +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/ctree.c | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/ctree.c ++++ b/fs/btrfs/ctree.c +@@ -5106,10 +5106,12 @@ int btrfs_del_items(struct btrfs_trans_h + int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path) + { + struct btrfs_key key; ++ struct btrfs_key orig_key; + struct btrfs_disk_key found_key; + int ret; + + btrfs_item_key_to_cpu(path->nodes[0], &key, 0); ++ orig_key = key; + + if (key.offset > 0) { + key.offset--; +@@ -5126,8 +5128,36 @@ int btrfs_prev_leaf(struct btrfs_root *r + + btrfs_release_path(path); + ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); +- if (ret < 0) ++ if (ret <= 0) + return ret; ++ ++ /* ++ * Previous key not found. Even if we were at slot 0 of the leaf we had ++ * before releasing the path and calling btrfs_search_slot(), we now may ++ * be in a slot pointing to the same original key - this can happen if ++ * after we released the path, one of more items were moved from a ++ * sibling leaf into the front of the leaf we had due to an insertion ++ * (see push_leaf_right()). ++ * If we hit this case and our slot is > 0 and just decrement the slot ++ * so that the caller does not process the same key again, which may or ++ * may not break the caller, depending on its logic. ++ */ ++ if (path->slots[0] < btrfs_header_nritems(path->nodes[0])) { ++ btrfs_item_key(path->nodes[0], &found_key, path->slots[0]); ++ ret = comp_keys(&found_key, &orig_key); ++ if (ret == 0) { ++ if (path->slots[0] > 0) { ++ path->slots[0]--; ++ return 0; ++ } ++ /* ++ * At slot 0, same key as before, it means orig_key is ++ * the lowest, leftmost, key in the tree. We're done. ++ */ ++ return 1; ++ } ++ } ++ + btrfs_item_key(path->nodes[0], &found_key, 0); + ret = comp_keys(&found_key, &key); + /* diff --git a/queue-4.14/btrfs-print-tree-parent-bytenr-must-be-aligned-to-sector-size.patch b/queue-4.14/btrfs-print-tree-parent-bytenr-must-be-aligned-to-sector-size.patch new file mode 100644 index 00000000000..a9a45265acc --- /dev/null +++ b/queue-4.14/btrfs-print-tree-parent-bytenr-must-be-aligned-to-sector-size.patch @@ -0,0 +1,42 @@ +From c87f318e6f47696b4040b58f460d5c17ea0280e6 Mon Sep 17 00:00:00 2001 +From: Anastasia Belova +Date: Wed, 26 Apr 2023 14:53:23 +0300 +Subject: btrfs: print-tree: parent bytenr must be aligned to sector size + +From: Anastasia Belova + +commit c87f318e6f47696b4040b58f460d5c17ea0280e6 upstream. + +Check nodesize to sectorsize in alignment check in print_extent_item. +The comment states that and this is correct, similar check is done +elsewhere in the functions. + +Found by Linux Verification Center (linuxtesting.org) with SVACE. + +Fixes: ea57788eb76d ("btrfs: require only sector size alignment for parent eb bytenr") +CC: stable@vger.kernel.org # 4.14+ +Reviewed-by: Qu Wenruo +Signed-off-by: Anastasia Belova +Reviewed-by: David Sterba +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/print-tree.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/fs/btrfs/print-tree.c ++++ b/fs/btrfs/print-tree.c +@@ -130,10 +130,10 @@ static void print_extent_item(struct ext + pr_cont("shared data backref parent %llu count %u\n", + offset, btrfs_shared_data_ref_count(eb, sref)); + /* +- * offset is supposed to be a tree block which +- * must be aligned to nodesize. ++ * Offset is supposed to be a tree block which must be ++ * aligned to sectorsize. + */ +- if (!IS_ALIGNED(offset, eb->fs_info->nodesize)) ++ if (!IS_ALIGNED(offset, eb->fs_info->sectorsize)) + pr_info( + "\t\t\t(parent %llu not aligned to sectorsize %u)\n", + offset, eb->fs_info->sectorsize); diff --git a/queue-4.14/cifs-fix-pcchunk-length-type-in-smb2_copychunk_range.patch b/queue-4.14/cifs-fix-pcchunk-length-type-in-smb2_copychunk_range.patch new file mode 100644 index 00000000000..3fff1560345 --- /dev/null +++ b/queue-4.14/cifs-fix-pcchunk-length-type-in-smb2_copychunk_range.patch @@ -0,0 +1,34 @@ +From d66cde50c3c868af7abddafce701bb86e4a93039 Mon Sep 17 00:00:00 2001 +From: Pawel Witek +Date: Fri, 5 May 2023 17:14:59 +0200 +Subject: cifs: fix pcchunk length type in smb2_copychunk_range + +From: Pawel Witek + +commit d66cde50c3c868af7abddafce701bb86e4a93039 upstream. + +Change type of pcchunk->Length from u32 to u64 to match +smb2_copychunk_range arguments type. Fixes the problem where performing +server-side copy with CIFS_IOC_COPYCHUNK_FILE ioctl resulted in incomplete +copy of large files while returning -EINVAL. + +Fixes: 9bf0c9cd4314 ("CIFS: Fix SMB2/SMB3 Copy offload support (refcopy) for large files") +Cc: +Signed-off-by: Pawel Witek +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman +--- + fs/cifs/smb2ops.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/cifs/smb2ops.c ++++ b/fs/cifs/smb2ops.c +@@ -891,7 +891,7 @@ smb2_copychunk_range(const unsigned int + pcchunk->SourceOffset = cpu_to_le64(src_off); + pcchunk->TargetOffset = cpu_to_le64(dest_off); + pcchunk->Length = +- cpu_to_le32(min_t(u32, len, tcon->max_bytes_chunk)); ++ cpu_to_le32(min_t(u64, len, tcon->max_bytes_chunk)); + + /* Request server copy to target from src identified by key */ + kfree(retbuf); diff --git a/queue-4.14/perf-symbols-fix-return-incorrect-build_id-size-in-e.patch b/queue-4.14/perf-symbols-fix-return-incorrect-build_id-size-in-e.patch index d3e3cbc1c91..a45d7eeb167 100644 --- a/queue-4.14/perf-symbols-fix-return-incorrect-build_id-size-in-e.patch +++ b/queue-4.14/perf-symbols-fix-return-incorrect-build_id-size-in-e.patch @@ -31,14 +31,12 @@ Link: https://lore.kernel.org/r/20230427012841.231729-1-yangjihong1@huawei.com Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Sasha Levin --- - tools/perf/util/symbol-elf.c | 2 +- + tools/perf/util/symbol-elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c -index 866a61d662510..1071a276f4fdb 100644 --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c -@@ -504,7 +504,7 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size) +@@ -504,7 +504,7 @@ static int elf_read_build_id(Elf *elf, v size_t sz = min(size, descsz); memcpy(bf, ptr, sz); memset(bf + sz, 0, size - sz); @@ -47,6 +45,3 @@ index 866a61d662510..1071a276f4fdb 100644 break; } } --- -2.39.2 - diff --git a/queue-4.14/series b/queue-4.14/series index a40307871e0..f6929525c66 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -94,3 +94,10 @@ alsa-caiaq-input-add-error-handling-for-unsupported-.patch perf-vendor-events-power9-remove-utf-8-characters-fr.patch perf-map-delete-two-variable-initialisations-before-.patch perf-symbols-fix-return-incorrect-build_id-size-in-e.patch +btrfs-fix-btrfs_prev_leaf-to-not-return-the-same-key-twice.patch +btrfs-print-tree-parent-bytenr-must-be-aligned-to-sector-size.patch +cifs-fix-pcchunk-length-type-in-smb2_copychunk_range.patch +sh-math-emu-fix-macro-redefined-warning.patch +sh-nmi_debug-fix-return-value-of-__setup-handler.patch +arm-dts-exynos-fix-wm8960-clock-name-in-itop-elite.patch +arm-dts-s5pv210-correct-mipi-csis-clock-name.patch diff --git a/queue-4.14/sh-math-emu-fix-macro-redefined-warning.patch b/queue-4.14/sh-math-emu-fix-macro-redefined-warning.patch new file mode 100644 index 00000000000..de8de10da1a --- /dev/null +++ b/queue-4.14/sh-math-emu-fix-macro-redefined-warning.patch @@ -0,0 +1,47 @@ +From 58a49ad90939386a8682e842c474a0d2c00ec39c Mon Sep 17 00:00:00 2001 +From: Randy Dunlap +Date: Sun, 5 Mar 2023 20:00:34 -0800 +Subject: sh: math-emu: fix macro redefined warning + +From: Randy Dunlap + +commit 58a49ad90939386a8682e842c474a0d2c00ec39c upstream. + +Fix a warning that was reported by the kernel test robot: + +In file included from ../include/math-emu/soft-fp.h:27, + from ../arch/sh/math-emu/math.c:22: +../arch/sh/include/asm/sfp-machine.h:17: warning: "__BYTE_ORDER" redefined + 17 | #define __BYTE_ORDER __BIG_ENDIAN +In file included from ../arch/sh/math-emu/math.c:21: +../arch/sh/math-emu/sfp-util.h:71: note: this is the location of the previous definition + 71 | #define __BYTE_ORDER __LITTLE_ENDIAN + +Fixes: b929926f01f2 ("sh: define __BIG_ENDIAN for math-emu") +Signed-off-by: Randy Dunlap +Reported-by: kernel test robot +Link: lore.kernel.org/r/202111121827.6v6SXtVv-lkp@intel.com +Cc: John Paul Adrian Glaubitz +Cc: Yoshinori Sato +Cc: Rich Felker +Cc: linux-sh@vger.kernel.org +Reviewed-by: Geert Uytterhoeven +Cc: stable@vger.kernel.org +Reviewed-by: John Paul Adrian Glaubitz +Link: https://lore.kernel.org/r/20230306040037.20350-5-rdunlap@infradead.org +Signed-off-by: John Paul Adrian Glaubitz +Signed-off-by: Greg Kroah-Hartman +--- + arch/sh/math-emu/sfp-util.h | 4 ---- + 1 file changed, 4 deletions(-) + +--- a/arch/sh/math-emu/sfp-util.h ++++ b/arch/sh/math-emu/sfp-util.h +@@ -67,7 +67,3 @@ + } while (0) + + #define abort() return 0 +- +-#define __BYTE_ORDER __LITTLE_ENDIAN +- +- diff --git a/queue-4.14/sh-nmi_debug-fix-return-value-of-__setup-handler.patch b/queue-4.14/sh-nmi_debug-fix-return-value-of-__setup-handler.patch new file mode 100644 index 00000000000..2f1eec352c2 --- /dev/null +++ b/queue-4.14/sh-nmi_debug-fix-return-value-of-__setup-handler.patch @@ -0,0 +1,53 @@ +From d1155e4132de712a9d3066e2667ceaad39a539c5 Mon Sep 17 00:00:00 2001 +From: Randy Dunlap +Date: Sun, 5 Mar 2023 20:00:32 -0800 +Subject: sh: nmi_debug: fix return value of __setup handler + +From: Randy Dunlap + +commit d1155e4132de712a9d3066e2667ceaad39a539c5 upstream. + +__setup() handlers should return 1 to obsolete_checksetup() in +init/main.c to indicate that the boot option has been handled. +A return of 0 causes the boot option/value to be listed as an Unknown +kernel parameter and added to init's (limited) argument or environment +strings. Also, error return codes don't mean anything to +obsolete_checksetup() -- only non-zero (usually 1) or zero. +So return 1 from nmi_debug_setup(). + +Fixes: 1e1030dccb10 ("sh: nmi_debug support.") +Signed-off-by: Randy Dunlap +Reported-by: Igor Zhbanov +Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru +Cc: John Paul Adrian Glaubitz +Cc: Yoshinori Sato +Cc: Rich Felker +Cc: linux-sh@vger.kernel.org +Cc: stable@vger.kernel.org +Reviewed-by: John Paul Adrian Glaubitz +Link: https://lore.kernel.org/r/20230306040037.20350-3-rdunlap@infradead.org +Signed-off-by: John Paul Adrian Glaubitz +Signed-off-by: Greg Kroah-Hartman +--- + arch/sh/kernel/nmi_debug.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/sh/kernel/nmi_debug.c ++++ b/arch/sh/kernel/nmi_debug.c +@@ -52,7 +52,7 @@ static int __init nmi_debug_setup(char * + register_die_notifier(&nmi_debug_nb); + + if (*str != '=') +- return 0; ++ return 1; + + for (p = str + 1; *p; p = sep + 1) { + sep = strchr(p, ','); +@@ -73,6 +73,6 @@ static int __init nmi_debug_setup(char * + break; + } + +- return 0; ++ return 1; + } + __setup("nmi_debug", nmi_debug_setup); -- 2.47.3