From: Greg Kroah-Hartman Date: Thu, 30 Nov 2023 13:42:14 +0000 (+0000) Subject: 4.14-stable patches X-Git-Tag: v5.15.141~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=67b5e11ba17e936d24705390497a66f26f008402;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch --- diff --git a/queue-4.14/mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch b/queue-4.14/mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch new file mode 100644 index 00000000000..9efc78e499f --- /dev/null +++ b/queue-4.14/mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch @@ -0,0 +1,44 @@ +From 7f852cc1579297fd763789f8cd370639d0c654b6 Mon Sep 17 00:00:00 2001 +From: Claire Lin +Date: Mon, 26 Aug 2019 15:57:56 -0400 +Subject: mtd: rawnand: brcmnand: Fix ecc chunk calculation for erased page bitfips + +From: Claire Lin + +commit 7f852cc1579297fd763789f8cd370639d0c654b6 upstream. + +In brcmstb_nand_verify_erased_page(), the ECC chunk pointer calculation +while correcting erased page bitflips is wrong, fix it. + +Fixes: 02b88eea9f9c ("mtd: brcmnand: Add check for erased page bitflips") +Signed-off-by: Claire Lin +Reviewed-by: Ray Jui +Signed-off-by: Kamal Dasu +Signed-off-by: Miquel Raynal +Signed-off-by: Yuta Hayama +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/brcmnand/brcmnand.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/mtd/nand/brcmnand/brcmnand.c ++++ b/drivers/mtd/nand/brcmnand/brcmnand.c +@@ -1753,6 +1753,7 @@ static int brcmstb_nand_verify_erased_pa + int bitflips = 0; + int page = addr >> chip->page_shift; + int ret; ++ void *ecc_chunk; + + if (!buf) { + buf = chip->buffers->databuf; +@@ -1769,7 +1770,9 @@ static int brcmstb_nand_verify_erased_pa + return ret; + + for (i = 0; i < chip->ecc.steps; i++, oob += sas) { +- ret = nand_check_erased_ecc_chunk(buf, chip->ecc.size, ++ ecc_chunk = buf + chip->ecc.size * i; ++ ret = nand_check_erased_ecc_chunk(ecc_chunk, ++ chip->ecc.size, + oob, sas, NULL, 0, + chip->ecc.strength); + if (ret < 0) diff --git a/queue-4.14/series b/queue-4.14/series index 93b1943ec36..3e99e033621 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -8,3 +8,5 @@ arm-xen-fix-xen_vcpu_info-allocation-alignment.patch amd-xgbe-handle-corner-case-during-sfp-hotplug.patch amd-xgbe-propagate-the-correct-speed-and-duplex-stat.patch net-axienet-fix-check-for-partial-tx-checksum.patch +tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch +mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch diff --git a/queue-4.14/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch b/queue-4.14/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch new file mode 100644 index 00000000000..414c56549ac --- /dev/null +++ b/queue-4.14/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch @@ -0,0 +1,98 @@ +From b022f0c7e404887a7c5229788fc99eff9f9a80d5 Mon Sep 17 00:00:00 2001 +From: Francis Laniel +Date: Fri, 20 Oct 2023 13:42:49 +0300 +Subject: tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols + +From: Francis Laniel + +commit b022f0c7e404887a7c5229788fc99eff9f9a80d5 upstream. + +When a kprobe is attached to a function that's name is not unique (is +static and shares the name with other functions in the kernel), the +kprobe is attached to the first function it finds. This is a bug as the +function that it is attaching to is not necessarily the one that the +user wants to attach to. + +Instead of blindly picking a function to attach to what is ambiguous, +error with EADDRNOTAVAIL to let the user know that this function is not +unique, and that the user must use another unique function with an +address offset to get to the function they want to attach to. + +Link: https://lore.kernel.org/all/20231020104250.9537-2-flaniel@linux.microsoft.com/ + +Cc: stable@vger.kernel.org +Fixes: 413d37d1eb69 ("tracing: Add kprobe-based event tracer") +Suggested-by: Masami Hiramatsu +Signed-off-by: Francis Laniel +Link: https://lore.kernel.org/lkml/20230819101105.b0c104ae4494a7d1f2eea742@kernel.org/ +Acked-by: Masami Hiramatsu (Google) +Signed-off-by: Masami Hiramatsu (Google) +Signed-off-by: Greg Kroah-Hartman +--- + kernel/trace/trace_kprobe.c | 48 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +--- a/kernel/trace/trace_kprobe.c ++++ b/kernel/trace/trace_kprobe.c +@@ -617,6 +617,36 @@ static inline void sanitize_event_name(c + *name = '_'; + } + ++struct count_symbols_struct { ++ const char *func_name; ++ unsigned int count; ++}; ++ ++static int count_symbols(void *data, const char *name, struct module *unused0, ++ unsigned long unused1) ++{ ++ struct count_symbols_struct *args = data; ++ ++ if (strcmp(args->func_name, name)) ++ return 0; ++ ++ args->count++; ++ ++ return 0; ++} ++ ++static unsigned int number_of_same_symbols(char *func_name) ++{ ++ struct count_symbols_struct args = { ++ .func_name = func_name, ++ .count = 0, ++ }; ++ ++ kallsyms_on_each_symbol(count_symbols, &args); ++ ++ return args.count; ++} ++ + static int create_trace_kprobe(int argc, char **argv) + { + /* +@@ -746,6 +776,24 @@ static int create_trace_kprobe(int argc, + } + argc -= 2; argv += 2; + ++ if (symbol && !strchr(symbol, ':')) { ++ unsigned int count; ++ ++ count = number_of_same_symbols(symbol); ++ if (count > 1) ++ /* ++ * Users should use ADDR to remove the ambiguity of ++ * using KSYM only. ++ */ ++ return -EADDRNOTAVAIL; ++ else if (count == 0) ++ /* ++ * We can return ENOENT earlier than when register the ++ * kprobe. ++ */ ++ return -ENOENT; ++ } ++ + /* setup a probe */ + if (!event) { + /* Make a new event name */