]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Nov 2023 13:42:14 +0000 (13:42 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Nov 2023 13:42:14 +0000 (13:42 +0000)
added patches:
mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch
tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch

queue-4.14/mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch [new file with mode: 0644]
queue-4.14/series
queue-4.14/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch [new file with mode: 0644]

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 (file)
index 0000000..9efc78e
--- /dev/null
@@ -0,0 +1,44 @@
+From 7f852cc1579297fd763789f8cd370639d0c654b6 Mon Sep 17 00:00:00 2001
+From: Claire Lin <claire.lin@broadcom.com>
+Date: Mon, 26 Aug 2019 15:57:56 -0400
+Subject: mtd: rawnand: brcmnand: Fix ecc chunk calculation for erased page bitfips
+
+From: Claire Lin <claire.lin@broadcom.com>
+
+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 <claire.lin@broadcom.com>
+Reviewed-by: Ray Jui <ray.jui@broadcom.com>
+Signed-off-by: Kamal Dasu <kdasu.kdev@gmail.com>
+Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
+Signed-off-by: Yuta Hayama <hayama@lineo.co.jp>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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)
index 93b1943ec36984157418b2515fe318a859b1c24f..3e99e033621d0f025a1c180599e28b2e28c03c4c 100644 (file)
@@ -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 (file)
index 0000000..414c565
--- /dev/null
@@ -0,0 +1,98 @@
+From b022f0c7e404887a7c5229788fc99eff9f9a80d5 Mon Sep 17 00:00:00 2001
+From: Francis Laniel <flaniel@linux.microsoft.com>
+Date: Fri, 20 Oct 2023 13:42:49 +0300
+Subject: tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols
+
+From: Francis Laniel <flaniel@linux.microsoft.com>
+
+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 <mhiramat@kernel.org>
+Signed-off-by: Francis Laniel <flaniel@linux.microsoft.com>
+Link: https://lore.kernel.org/lkml/20230819101105.b0c104ae4494a7d1f2eea742@kernel.org/
+Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
+Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 */