From: Greg Kroah-Hartman Date: Sat, 21 Oct 2023 20:21:33 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v4.14.328~50 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7016572ec39ca3f7e9f73a99c55add98f29fca60;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch --- diff --git a/queue-5.10/gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch b/queue-5.10/gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch new file mode 100644 index 00000000000..d358ce91a5a --- /dev/null +++ b/queue-5.10/gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch @@ -0,0 +1,41 @@ +From fc363413ef8ea842ae7a99e3caf5465dafdd3a49 Mon Sep 17 00:00:00 2001 +From: Haibo Chen +Date: Wed, 18 Oct 2023 11:00:17 +0200 +Subject: gpio: vf610: set value before the direction to avoid a glitch + +From: Haibo Chen + +commit fc363413ef8ea842ae7a99e3caf5465dafdd3a49 upstream. + +We found a glitch when configuring the pad as output high. To avoid this +glitch, move the data value setting before direction config in the +function vf610_gpio_direction_output(). + +Fixes: 659d8a62311f ("gpio: vf610: add imx7ulp support") +Signed-off-by: Haibo Chen +[Bartosz: tweak the commit message] +Signed-off-by: Bartosz Golaszewski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpio/gpio-vf610.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/gpio/gpio-vf610.c ++++ b/drivers/gpio/gpio-vf610.c +@@ -127,14 +127,14 @@ static int vf610_gpio_direction_output(s + unsigned long mask = BIT(gpio); + u32 val; + ++ vf610_gpio_set(chip, gpio, value); ++ + if (port->sdata && port->sdata->have_paddr) { + val = vf610_gpio_readl(port->gpio_base + GPIO_PDDR); + val |= mask; + vf610_gpio_writel(val, port->gpio_base + GPIO_PDDR); + } + +- vf610_gpio_set(chip, gpio, value); +- + return pinctrl_gpio_direction_output(chip->base + gpio); + } + diff --git a/queue-5.10/series b/queue-5.10/series index db65c912fcd..1045dc9f180 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -195,4 +195,4 @@ perf-disallow-mis-matched-inherited-group-reads.patch s390-pci-fix-iommu-bitmap-allocation.patch platform-x86-asus-wmi-change-asus_wmi_brn_down-code-from-0x20-to-0x2e.patch platform-x86-asus-wmi-map-0x2a-code-ignore-0x2b-and-0x2c-events.patch -tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch +gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.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 index d0553927d7e..00000000000 --- a/queue-5.10/tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch +++ /dev/null @@ -1,145 +0,0 @@ -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 | 63 +++++++++++++++++++++++++++++++++++++ - kernel/trace/trace_probe.h | 1 + - 2 files changed, 64 insertions(+) - -diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c -index 3d7a180a8427..a8fef6ab0872 100644 ---- a/kernel/trace/trace_kprobe.c -+++ b/kernel/trace/trace_kprobe.c -@@ -705,6 +705,25 @@ static struct notifier_block trace_kprobe_module_nb = { - .priority = 1 /* Invoked after kprobe module callback */ - }; - -+static int count_symbols(void *data, unsigned long unused) -+{ -+ unsigned int *count = data; -+ -+ (*count)++; -+ -+ return 0; -+} -+ -+static unsigned int number_of_same_symbols(char *func_name) -+{ -+ unsigned int count; -+ -+ count = 0; -+ kallsyms_on_each_match_symbol(count_symbols, func_name, &count); -+ -+ return count; -+} -+ - static int __trace_kprobe_create(int argc, const char *argv[]) - { - /* -@@ -836,6 +855,31 @@ static int __trace_kprobe_create(int argc, const char *argv[]) - } - } - -+ 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, gbuf, -@@ -1695,6 +1739,7 @@ static int unregister_kprobe_event(struct trace_kprobe *tk) - } - - #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, -@@ -1705,6 +1750,24 @@ create_local_trace_kprobe(char *func, void *addr, unsigned long offs, - 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 -diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h -index 02b432ae7513..850d9ecb6765 100644 ---- a/kernel/trace/trace_probe.h -+++ b/kernel/trace/trace_probe.h -@@ -450,6 +450,7 @@ extern int traceprobe_define_arg_fields(struct trace_event_call *event_call, - 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_TRACEPOINT, "Tracepoint is not found"), \ - C(BAD_ADDR_SUFFIX, "Invalid probed address suffix"), \ --- -2.42.0 -