]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Dec 2023 08:22:26 +0000 (08:22 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Dec 2023 08:22:26 +0000 (08:22 +0000)
queue-4.14/series
queue-4.14/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch [deleted file]
queue-4.19/series
queue-4.19/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch [deleted file]
queue-5.10/series
queue-5.10/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch [deleted file]
queue-5.15/series
queue-5.15/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch [deleted file]
queue-5.4/series
queue-5.4/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch [deleted file]

index a5ebb8aa86abb2cb013bfeb02ee066d8bce80cde..3c5c2317c1f2146a5227d1cbc4cfb49f72b0b016 100644 (file)
@@ -8,7 +8,6 @@ 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
 s390-dasd-protect-device-queue-against-concurrent-access.patch
 usb-serial-option-add-luat-air72-u-series-products.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
deleted file mode 100644 (file)
index 414c565..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-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 */
index 14a922e0c5e16f55cfd55b9386c6f2fbd762965f..677d17e030bec355f5fdc1f79299ec96fba4d533 100644 (file)
@@ -12,7 +12,6 @@ amd-xgbe-handle-the-corner-case-during-tx-completion.patch
 amd-xgbe-propagate-the-correct-speed-and-duplex-stat.patch
 net-axienet-fix-check-for-partial-tx-checksum.patch
 mips-kvm-fix-a-build-warning-about-variable-set-but-.patch
-tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
 arm64-cpufeature-extract-capped-perfmon-fields.patch
 kvm-arm64-limit-pmu-version-to-pmuv3-for-armv8.1.patch
 mtd-rawnand-brcmnand-fix-ecc-chunk-calculation-for-erased-page-bitfips.patch
diff --git a/queue-4.19/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch b/queue-4.19/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
deleted file mode 100644 (file)
index c28089d..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-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
-@@ -715,6 +715,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)
- {
-       /*
-@@ -845,6 +875,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 */
index b8acfa490a025ac0124c9f32eebfd27812186735..d688d29c134edeed7172aad09ae5740bea6a2400 100644 (file)
@@ -46,7 +46,6 @@ ext4-fix-slab-use-after-free-in-ext4_es_insert_exten.patch
 ext4-make-sure-allocate-pending-entry-not-fail.patch
 nfsd-lock_rename-needs-both-directories-to-live-on-the-same-fs.patch
 asoc-simple-card-fixup-asoc_simple_probe-error-handling.patch
-tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
 acpi-resource-skip-irq-override-on-asus-expertbook-b1402cva.patch
 swiotlb-xen-provide-the-max_mapping_size-method.patch
 bcache-replace-a-mistaken-is_err-by-is_err_or_null-in-btree_gc_coalesce.patch
diff --git a/queue-5.10/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch b/queue-5.10/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
deleted file mode 100644 (file)
index 5275187..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-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 |   74 ++++++++++++++++++++++++++++++++++++++++++++
- kernel/trace/trace_probe.h  |    1 
- 2 files changed, 75 insertions(+)
-
---- a/kernel/trace/trace_kprobe.c
-+++ b/kernel/trace/trace_kprobe.c
-@@ -715,6 +715,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 trace_kprobe_create(int argc, const char *argv[])
- {
-       /*
-@@ -842,6 +872,31 @@ static int trace_kprobe_create(int argc,
-               }
-       }
-+      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.
-+                       */
-+                      trace_probe_log_err(0, NON_UNIQ_SYMBOL);
-+                      ret = -EADDRNOTAVAIL;
-+
-+                      goto error;
-+              } else if (count == 0) {
-+                      /*
-+                       * We can return ENOENT earlier than when register the
-+                       * kprobe.
-+                       */
-+                      trace_probe_log_err(0, BAD_PROBE_ADDR);
-+                      ret = -ENOENT;
-+
-+                      goto error;
-+              }
-+      }
-+
-       trace_probe_log_set_index(0);
-       if (event) {
-               ret = traceprobe_parse_event_name(&event, &group, buf,
-@@ -1805,6 +1860,7 @@ static int unregister_kprobe_event(struc
- }
- #ifdef CONFIG_PERF_EVENTS
-+
- /* create a trace_kprobe, but don't add it to global lists */
- struct trace_event_call *
- create_local_trace_kprobe(char *func, void *addr, unsigned long offs,
-@@ -1814,6 +1870,24 @@ create_local_trace_kprobe(char *func, vo
-       int ret;
-       char *event;
-+      if (func) {
-+              unsigned int count;
-+
-+              count = number_of_same_symbols(func);
-+              if (count > 1)
-+                      /*
-+                       * Users should use addr to remove the ambiguity of
-+                       * using func only.
-+                       */
-+                      return ERR_PTR(-EADDRNOTAVAIL);
-+              else if (count == 0)
-+                      /*
-+                       * We can return ENOENT earlier than when register the
-+                       * kprobe.
-+                       */
-+                      return ERR_PTR(-ENOENT);
-+      }
-+
-       /*
-        * local trace_kprobes are not added to dyn_event, so they are never
-        * searched in find_trace_kprobe(). Therefore, there is no concern of
---- a/kernel/trace/trace_probe.h
-+++ b/kernel/trace/trace_probe.h
-@@ -390,6 +390,7 @@ extern int traceprobe_define_arg_fields(
-       C(BAD_MAXACT,           "Invalid maxactive number"),            \
-       C(MAXACT_TOO_BIG,       "Maxactive is too big"),                \
-       C(BAD_PROBE_ADDR,       "Invalid probed address or symbol"),    \
-+      C(NON_UNIQ_SYMBOL,      "The symbol is not unique"),            \
-       C(BAD_RETPROBE,         "Retprobe address must be an function entry"), \
-       C(BAD_ADDR_SUFFIX,      "Invalid probed address suffix"), \
-       C(NO_GROUP_NAME,        "Group name is not specified"),         \
index 57db4a2cf167c830d300bebb6db99f9d0e20ac91..1d76f3621ff54e9cfb95e47e7c7fbfc5c181a8f6 100644 (file)
@@ -39,7 +39,6 @@ ext4-using-nofail-preallocation-in-ext4_es_insert_de.patch
 ext4-using-nofail-preallocation-in-ext4_es_insert_ex.patch
 ext4-fix-slab-use-after-free-in-ext4_es_insert_exten.patch
 ext4-make-sure-allocate-pending-entry-not-fail.patch
-tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
 proc-sysctl-prevent-aliased-sysctls-from-getting-passed-to-init.patch
 acpi-resource-skip-irq-override-on-asus-expertbook-b1402cva.patch
 swiotlb-xen-provide-the-max_mapping_size-method.patch
diff --git a/queue-5.15/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch b/queue-5.15/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
deleted file mode 100644 (file)
index b952489..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-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 |   74 ++++++++++++++++++++++++++++++++++++++++++++
- kernel/trace/trace_probe.h  |    1 
- 2 files changed, 75 insertions(+)
-
---- a/kernel/trace/trace_kprobe.c
-+++ b/kernel/trace/trace_kprobe.c
-@@ -708,6 +708,36 @@ static struct notifier_block trace_kprob
-       .priority = 1   /* Invoked after kprobe module callback */
- };
-+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 __trace_kprobe_create(int argc, const char *argv[])
- {
-       /*
-@@ -836,6 +866,31 @@ static int __trace_kprobe_create(int arg
-               }
-       }
-+      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.
-+                       */
-+                      trace_probe_log_err(0, NON_UNIQ_SYMBOL);
-+                      ret = -EADDRNOTAVAIL;
-+
-+                      goto error;
-+              } else if (count == 0) {
-+                      /*
-+                       * We can return ENOENT earlier than when register the
-+                       * kprobe.
-+                       */
-+                      trace_probe_log_err(0, BAD_PROBE_ADDR);
-+                      ret = -ENOENT;
-+
-+                      goto error;
-+              }
-+      }
-+
-       trace_probe_log_set_index(0);
-       if (event) {
-               ret = traceprobe_parse_event_name(&event, &group, buf,
-@@ -1755,6 +1810,7 @@ static int unregister_kprobe_event(struc
- }
- #ifdef CONFIG_PERF_EVENTS
-+
- /* create a trace_kprobe, but don't add it to global lists */
- struct trace_event_call *
- create_local_trace_kprobe(char *func, void *addr, unsigned long offs,
-@@ -1765,6 +1821,24 @@ create_local_trace_kprobe(char *func, vo
-       int ret;
-       char *event;
-+      if (func) {
-+              unsigned int count;
-+
-+              count = number_of_same_symbols(func);
-+              if (count > 1)
-+                      /*
-+                       * Users should use addr to remove the ambiguity of
-+                       * using func only.
-+                       */
-+                      return ERR_PTR(-EADDRNOTAVAIL);
-+              else if (count == 0)
-+                      /*
-+                       * We can return ENOENT earlier than when register the
-+                       * kprobe.
-+                       */
-+                      return ERR_PTR(-ENOENT);
-+      }
-+
-       /*
-        * local trace_kprobes are not added to dyn_event, so they are never
-        * searched in find_trace_kprobe(). Therefore, there is no concern of
---- a/kernel/trace/trace_probe.h
-+++ b/kernel/trace/trace_probe.h
-@@ -405,6 +405,7 @@ extern int traceprobe_define_arg_fields(
-       C(BAD_MAXACT,           "Invalid maxactive number"),            \
-       C(MAXACT_TOO_BIG,       "Maxactive is too big"),                \
-       C(BAD_PROBE_ADDR,       "Invalid probed address or symbol"),    \
-+      C(NON_UNIQ_SYMBOL,      "The symbol is not unique"),            \
-       C(BAD_RETPROBE,         "Retprobe address must be an function entry"), \
-       C(BAD_ADDR_SUFFIX,      "Invalid probed address suffix"), \
-       C(NO_GROUP_NAME,        "Group name is not specified"),         \
index 8081d0ea1086299962ecd5dbb49e23d2be02a689..d98da851627de04a7a705e5d636a2d5f4bbd16bf 100644 (file)
@@ -28,7 +28,6 @@ ext4-using-nofail-preallocation-in-ext4_es_insert_de.patch
 ext4-using-nofail-preallocation-in-ext4_es_insert_ex.patch
 ext4-fix-slab-use-after-free-in-ext4_es_insert_exten.patch
 ext4-make-sure-allocate-pending-entry-not-fail.patch
-tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
 arm64-cpufeature-extract-capped-perfmon-fields.patch
 kvm-arm64-limit-pmu-version-to-pmuv3-for-armv8.1.patch
 acpi-resource-skip-irq-override-on-asus-expertbook-b1402cva.patch
diff --git a/queue-5.4/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch b/queue-5.4/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch
deleted file mode 100644 (file)
index eae4c16..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-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 |   74 ++++++++++++++++++++++++++++++++++++++++++++
- kernel/trace/trace_probe.h  |    1 
- 2 files changed, 75 insertions(+)
-
---- a/kernel/trace/trace_kprobe.c
-+++ b/kernel/trace/trace_kprobe.c
-@@ -714,6 +714,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 trace_kprobe_create(int argc, const char *argv[])
- {
-       /*
-@@ -825,6 +855,31 @@ static int trace_kprobe_create(int argc,
-               }
-       }
-+      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.
-+                       */
-+                      trace_probe_log_err(0, NON_UNIQ_SYMBOL);
-+                      ret = -EADDRNOTAVAIL;
-+
-+                      goto error;
-+              } else if (count == 0) {
-+                      /*
-+                       * We can return ENOENT earlier than when register the
-+                       * kprobe.
-+                       */
-+                      trace_probe_log_err(0, BAD_PROBE_ADDR);
-+                      ret = -ENOENT;
-+
-+                      goto error;
-+              }
-+      }
-+
-       trace_probe_log_set_index(0);
-       if (event) {
-               ret = traceprobe_parse_event_name(&event, &group, buf,
-@@ -1596,6 +1651,7 @@ static int unregister_kprobe_event(struc
- }
- #ifdef CONFIG_PERF_EVENTS
-+
- /* create a trace_kprobe, but don't add it to global lists */
- struct trace_event_call *
- create_local_trace_kprobe(char *func, void *addr, unsigned long offs,
-@@ -1605,6 +1661,24 @@ create_local_trace_kprobe(char *func, vo
-       int ret;
-       char *event;
-+      if (func) {
-+              unsigned int count;
-+
-+              count = number_of_same_symbols(func);
-+              if (count > 1)
-+                      /*
-+                       * Users should use addr to remove the ambiguity of
-+                       * using func only.
-+                       */
-+                      return ERR_PTR(-EADDRNOTAVAIL);
-+              else if (count == 0)
-+                      /*
-+                       * We can return ENOENT earlier than when register the
-+                       * kprobe.
-+                       */
-+                      return ERR_PTR(-ENOENT);
-+      }
-+
-       /*
-        * local trace_kprobes are not added to dyn_event, so they are never
-        * searched in find_trace_kprobe(). Therefore, there is no concern of
---- a/kernel/trace/trace_probe.h
-+++ b/kernel/trace/trace_probe.h
-@@ -403,6 +403,7 @@ extern int traceprobe_define_arg_fields(
-       C(BAD_MAXACT,           "Invalid maxactive number"),            \
-       C(MAXACT_TOO_BIG,       "Maxactive is too big"),                \
-       C(BAD_PROBE_ADDR,       "Invalid probed address or symbol"),    \
-+      C(NON_UNIQ_SYMBOL,      "The symbol is not unique"),            \
-       C(BAD_RETPROBE,         "Retprobe address must be an function entry"), \
-       C(NO_GROUP_NAME,        "Group name is not specified"),         \
-       C(GROUP_TOO_LONG,       "Group name is too long"),              \