From: Greg Kroah-Hartman Date: Fri, 3 Jun 2022 13:37:07 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v4.9.317~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6c25e50c09911bef84535a329829ee6078bbe86a;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: assoc_array-fix-bug_on-during-garbage-collect.patch cfg80211-set-custom-regdomain-after-wiphy-registration.patch libtraceevent-fix-build-with-binutils-2.35.patch perf-bench-share-some-global-variables-to-fix-build-with-gcc-10.patch perf-tests-bp_account-make-global-variable-static.patch --- diff --git a/queue-4.19/assoc_array-fix-bug_on-during-garbage-collect.patch b/queue-4.19/assoc_array-fix-bug_on-during-garbage-collect.patch new file mode 100644 index 00000000000..e4fde1e0ae3 --- /dev/null +++ b/queue-4.19/assoc_array-fix-bug_on-during-garbage-collect.patch @@ -0,0 +1,163 @@ +From d1dc87763f406d4e67caf16dbe438a5647692395 Mon Sep 17 00:00:00 2001 +From: Stephen Brennan +Date: Thu, 19 May 2022 09:50:30 +0100 +Subject: assoc_array: Fix BUG_ON during garbage collect + +From: Stephen Brennan + +commit d1dc87763f406d4e67caf16dbe438a5647692395 upstream. + +A rare BUG_ON triggered in assoc_array_gc: + + [3430308.818153] kernel BUG at lib/assoc_array.c:1609! + +Which corresponded to the statement currently at line 1593 upstream: + + BUG_ON(assoc_array_ptr_is_meta(p)); + +Using the data from the core dump, I was able to generate a userspace +reproducer[1] and determine the cause of the bug. + +[1]: https://github.com/brenns10/kernel_stuff/tree/master/assoc_array_gc + +After running the iterator on the entire branch, an internal tree node +looked like the following: + + NODE (nr_leaves_on_branch: 3) + SLOT [0] NODE (2 leaves) + SLOT [1] NODE (1 leaf) + SLOT [2..f] NODE (empty) + +In the userspace reproducer, the pr_devel output when compressing this +node was: + + -- compress node 0x5607cc089380 -- + free=0, leaves=0 + [0] retain node 2/1 [nx 0] + [1] fold node 1/1 [nx 0] + [2] fold node 0/1 [nx 2] + [3] fold node 0/2 [nx 2] + [4] fold node 0/3 [nx 2] + [5] fold node 0/4 [nx 2] + [6] fold node 0/5 [nx 2] + [7] fold node 0/6 [nx 2] + [8] fold node 0/7 [nx 2] + [9] fold node 0/8 [nx 2] + [10] fold node 0/9 [nx 2] + [11] fold node 0/10 [nx 2] + [12] fold node 0/11 [nx 2] + [13] fold node 0/12 [nx 2] + [14] fold node 0/13 [nx 2] + [15] fold node 0/14 [nx 2] + after: 3 + +At slot 0, an internal node with 2 leaves could not be folded into the +node, because there was only one available slot (slot 0). Thus, the +internal node was retained. At slot 1, the node had one leaf, and was +able to be folded in successfully. The remaining nodes had no leaves, +and so were removed. By the end of the compression stage, there were 14 +free slots, and only 3 leaf nodes. The tree was ascended and then its +parent node was compressed. When this node was seen, it could not be +folded, due to the internal node it contained. + +The invariant for compression in this function is: whenever +nr_leaves_on_branch < ASSOC_ARRAY_FAN_OUT, the node should contain all +leaf nodes. The compression step currently cannot guarantee this, given +the corner case shown above. + +To fix this issue, retry compression whenever we have retained a node, +and yet nr_leaves_on_branch < ASSOC_ARRAY_FAN_OUT. This second +compression will then allow the node in slot 1 to be folded in, +satisfying the invariant. Below is the output of the reproducer once the +fix is applied: + + -- compress node 0x560e9c562380 -- + free=0, leaves=0 + [0] retain node 2/1 [nx 0] + [1] fold node 1/1 [nx 0] + [2] fold node 0/1 [nx 2] + [3] fold node 0/2 [nx 2] + [4] fold node 0/3 [nx 2] + [5] fold node 0/4 [nx 2] + [6] fold node 0/5 [nx 2] + [7] fold node 0/6 [nx 2] + [8] fold node 0/7 [nx 2] + [9] fold node 0/8 [nx 2] + [10] fold node 0/9 [nx 2] + [11] fold node 0/10 [nx 2] + [12] fold node 0/11 [nx 2] + [13] fold node 0/12 [nx 2] + [14] fold node 0/13 [nx 2] + [15] fold node 0/14 [nx 2] + internal nodes remain despite enough space, retrying + -- compress node 0x560e9c562380 -- + free=14, leaves=1 + [0] fold node 2/15 [nx 0] + after: 3 + +Changes +======= +DH: + - Use false instead of 0. + - Reorder the inserted lines in a couple of places to put retained before + next_slot. + +ver #2) + - Fix typo in pr_devel, correct comparison to "<=" + +Fixes: 3cb989501c26 ("Add a generic associative array implementation.") +Cc: +Signed-off-by: Stephen Brennan +Signed-off-by: David Howells +cc: Andrew Morton +cc: keyrings@vger.kernel.org +Link: https://lore.kernel.org/r/20220511225517.407935-1-stephen.s.brennan@oracle.com/ # v1 +Link: https://lore.kernel.org/r/20220512215045.489140-1-stephen.s.brennan@oracle.com/ # v2 +Reviewed-by: Jarkko Sakkinen +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman +--- + lib/assoc_array.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/lib/assoc_array.c ++++ b/lib/assoc_array.c +@@ -1465,6 +1465,7 @@ int assoc_array_gc(struct assoc_array *a + struct assoc_array_ptr *cursor, *ptr; + struct assoc_array_ptr *new_root, *new_parent, **new_ptr_pp; + unsigned long nr_leaves_on_tree; ++ bool retained; + int keylen, slot, nr_free, next_slot, i; + + pr_devel("-->%s()\n", __func__); +@@ -1541,6 +1542,7 @@ continue_node: + goto descend; + } + ++retry_compress: + pr_devel("-- compress node %p --\n", new_n); + + /* Count up the number of empty slots in this node and work out the +@@ -1558,6 +1560,7 @@ continue_node: + pr_devel("free=%d, leaves=%lu\n", nr_free, new_n->nr_leaves_on_branch); + + /* See what we can fold in */ ++ retained = false; + next_slot = 0; + for (slot = 0; slot < ASSOC_ARRAY_FAN_OUT; slot++) { + struct assoc_array_shortcut *s; +@@ -1607,9 +1610,14 @@ continue_node: + pr_devel("[%d] retain node %lu/%d [nx %d]\n", + slot, child->nr_leaves_on_branch, nr_free + 1, + next_slot); ++ retained = true; + } + } + ++ if (retained && new_n->nr_leaves_on_branch <= ASSOC_ARRAY_FAN_OUT) { ++ pr_devel("internal nodes remain despite enough space, retrying\n"); ++ goto retry_compress; ++ } + pr_devel("after: %lu\n", new_n->nr_leaves_on_branch); + + nr_leaves_on_tree = new_n->nr_leaves_on_branch; diff --git a/queue-4.19/cfg80211-set-custom-regdomain-after-wiphy-registration.patch b/queue-4.19/cfg80211-set-custom-regdomain-after-wiphy-registration.patch new file mode 100644 index 00000000000..3ce02624c4b --- /dev/null +++ b/queue-4.19/cfg80211-set-custom-regdomain-after-wiphy-registration.patch @@ -0,0 +1,67 @@ +From 1b7b3ac8ff3317cdcf07a1c413de9bdb68019c2b Mon Sep 17 00:00:00 2001 +From: Miri Korenblit +Date: Fri, 18 Jun 2021 13:41:46 +0300 +Subject: cfg80211: set custom regdomain after wiphy registration + +From: Miri Korenblit + +commit 1b7b3ac8ff3317cdcf07a1c413de9bdb68019c2b upstream. + +We used to set regulatory info before the registration of +the device and then the regulatory info didn't get set, because +the device isn't registered so there isn't a device to set the +regulatory info for. So set the regulatory info after the device +registration. +Call reg_process_self_managed_hints() once again after the device +registration because it does nothing before it. + +Signed-off-by: Miri Korenblit +Signed-off-by: Luca Coelho +Link: https://lore.kernel.org/r/iwlwifi.20210618133832.c96eadcffe80.I86799c2c866b5610b4cf91115c21d8ceb525c5aa@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman +--- + net/wireless/core.c | 7 ++++--- + net/wireless/reg.c | 1 + + 2 files changed, 5 insertions(+), 3 deletions(-) + +--- a/net/wireless/core.c ++++ b/net/wireless/core.c +@@ -4,6 +4,7 @@ + * Copyright 2006-2010 Johannes Berg + * Copyright 2013-2014 Intel Mobile Communications GmbH + * Copyright 2015-2017 Intel Deutschland GmbH ++ * Copyright (C) 2018-2021 Intel Corporation + */ + + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +@@ -835,9 +836,6 @@ int wiphy_register(struct wiphy *wiphy) + return res; + } + +- /* set up regulatory info */ +- wiphy_regulatory_register(wiphy); +- + list_add_rcu(&rdev->list, &cfg80211_rdev_list); + cfg80211_rdev_list_generation++; + +@@ -851,6 +849,9 @@ int wiphy_register(struct wiphy *wiphy) + cfg80211_debugfs_rdev_add(rdev); + nl80211_notify_wiphy(rdev, NL80211_CMD_NEW_WIPHY); + ++ /* set up regulatory info */ ++ wiphy_regulatory_register(wiphy); ++ + if (wiphy->regulatory_flags & REGULATORY_CUSTOM_REG) { + struct regulatory_request request; + +--- a/net/wireless/reg.c ++++ b/net/wireless/reg.c +@@ -3756,6 +3756,7 @@ void wiphy_regulatory_register(struct wi + + wiphy_update_regulatory(wiphy, lr->initiator); + wiphy_all_share_dfs_chan_state(wiphy); ++ reg_process_self_managed_hints(); + } + + void wiphy_regulatory_deregister(struct wiphy *wiphy) diff --git a/queue-4.19/libtraceevent-fix-build-with-binutils-2.35.patch b/queue-4.19/libtraceevent-fix-build-with-binutils-2.35.patch new file mode 100644 index 00000000000..b2cb9c42fa2 --- /dev/null +++ b/queue-4.19/libtraceevent-fix-build-with-binutils-2.35.patch @@ -0,0 +1,40 @@ +From foo@baz Fri Jun 3 03:36:04 PM CEST 2022 +From: "Daniel Díaz" +Date: Mon, 30 May 2022 16:53:23 -0500 +Subject: libtraceevent: Fix build with binutils 2.35 +To: gregkh@linuxfoundation.org, sashal@kernel.org, stable@vger.kernel.org +Cc: "Ben Hutchings" , "Salvatore Bonaccorso" , "Steven Rostedt" , linux-trace-devel@vger.kernel.org, "Arnaldo Carvalho de Melo" , "Daniel Díaz" , linux-kernel@vger.kernel.org (open list) +Message-ID: <20220530215325.921847-2-daniel.diaz@linaro.org> + +From: Ben Hutchings + +[ Upstream commit 39efdd94e314336f4acbac4c07e0f37bdc3bef71 ] + +In binutils 2.35, 'nm -D' changed to show symbol versions along with +symbol names, with the usual @@ separator. When generating +libtraceevent-dynamic-list we need just the names, so strip off the +version suffix if present. + +Signed-off-by: Ben Hutchings +Tested-by: Salvatore Bonaccorso +Reviewed-by: Steven Rostedt +Cc: linux-trace-devel@vger.kernel.org +Cc: stable@vger.kernel.org +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Daniel Díaz +Signed-off-by: Greg Kroah-Hartman +--- + tools/lib/traceevent/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/tools/lib/traceevent/Makefile ++++ b/tools/lib/traceevent/Makefile +@@ -263,7 +263,7 @@ define do_generate_dynamic_list_file + xargs echo "U w W" | tr 'w ' 'W\n' | sort -u | xargs echo`;\ + if [ "$$symbol_type" = "U W" ];then \ + (echo '{'; \ +- $(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u;\ ++ $(NM) -u -D $1 | awk 'NF>1 {sub("@.*", "", $$2); print "\t"$$2";"}' | sort -u;\ + echo '};'; \ + ) > $2; \ + else \ diff --git a/queue-4.19/perf-bench-share-some-global-variables-to-fix-build-with-gcc-10.patch b/queue-4.19/perf-bench-share-some-global-variables-to-fix-build-with-gcc-10.patch new file mode 100644 index 00000000000..e01130b96e2 --- /dev/null +++ b/queue-4.19/perf-bench-share-some-global-variables-to-fix-build-with-gcc-10.patch @@ -0,0 +1,152 @@ +From foo@baz Fri Jun 3 03:36:04 PM CEST 2022 +From: "Daniel Díaz" +Date: Mon, 30 May 2022 16:53:24 -0500 +Subject: perf bench: Share some global variables to fix build with gcc 10 +To: gregkh@linuxfoundation.org, sashal@kernel.org, stable@vger.kernel.org +Cc: "Arnaldo Carvalho de Melo" , "Thomas Gleixner" , "Adrian Hunter" , "Davidlohr Bueso" , "Jiri Olsa" , "Namhyung Kim" , "Daniel Díaz" , "Peter Zijlstra" , "Ingo Molnar" , "Arnaldo Carvalho de Melo" , "Alexander Shishkin" , "Jiri Olsa" , "Darren Hart" , linux-kernel@vger.kernel.org (open list:PERFORMANCE EVENTS SUBSYSTEM) +Message-ID: <20220530215325.921847-3-daniel.diaz@linaro.org> + +From: Arnaldo Carvalho de Melo + +[ Upstream commit e4d9b04b973b2dbce7b42af95ea70d07da1c936d ] + +Noticed with gcc 10 (fedora rawhide) that those variables were not being +declared as static, so end up with: + + ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `end'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here + ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `start'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here + ld: /tmp/build/perf/bench/epoll-wait.o:/git/perf/tools/perf/bench/epoll-wait.c:93: multiple definition of `runtime'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here + ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `end'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here + ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `start'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here + ld: /tmp/build/perf/bench/epoll-ctl.o:/git/perf/tools/perf/bench/epoll-ctl.c:38: multiple definition of `runtime'; /tmp/build/perf/bench/futex-hash.o:/git/perf/tools/perf/bench/futex-hash.c:40: first defined here + make[4]: *** [/git/perf/tools/build/Makefile.build:145: /tmp/build/perf/bench/perf-in.o] Error 1 + +Prefix those with bench__ and add them to bench/bench.h, so that we can +share those on the tools needing to access those variables from signal +handlers. + +Acked-by: Thomas Gleixner +Cc: Adrian Hunter +Cc: Davidlohr Bueso +Cc: Jiri Olsa +Cc: Namhyung Kim +Link: http://lore.kernel.org/lkml/20200303155811.GD13702@kernel.org +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Daniel Díaz +Signed-off-by: Greg Kroah-Hartman +--- + tools/perf/bench/bench.h | 4 ++++ + tools/perf/bench/futex-hash.c | 12 ++++++------ + tools/perf/bench/futex-lock-pi.c | 11 +++++------ + 3 files changed, 15 insertions(+), 12 deletions(-) + +--- a/tools/perf/bench/bench.h ++++ b/tools/perf/bench/bench.h +@@ -2,6 +2,10 @@ + #ifndef BENCH_H + #define BENCH_H + ++#include ++ ++extern struct timeval bench__start, bench__end, bench__runtime; ++ + /* + * The madvise transparent hugepage constants were added in glibc + * 2.13. For compatibility with older versions of glibc, define these +--- a/tools/perf/bench/futex-hash.c ++++ b/tools/perf/bench/futex-hash.c +@@ -35,7 +35,7 @@ static unsigned int nfutexes = 1024; + static bool fshared = false, done = false, silent = false; + static int futex_flag = 0; + +-struct timeval start, end, runtime; ++struct timeval bench__start, bench__end, bench__runtime; + static pthread_mutex_t thread_lock; + static unsigned int threads_starting; + static struct stats throughput_stats; +@@ -101,8 +101,8 @@ static void toggle_done(int sig __maybe_ + { + /* inform all threads that we're done for the day */ + done = true; +- gettimeofday(&end, NULL); +- timersub(&end, &start, &runtime); ++ gettimeofday(&bench__end, NULL); ++ timersub(&bench__end, &bench__start, &bench__runtime); + } + + static void print_summary(void) +@@ -112,7 +112,7 @@ static void print_summary(void) + + printf("%sAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n", + !silent ? "\n" : "", avg, rel_stddev_stats(stddev, avg), +- (int) runtime.tv_sec); ++ (int)bench__runtime.tv_sec); + } + + int bench_futex_hash(int argc, const char **argv) +@@ -159,7 +159,7 @@ int bench_futex_hash(int argc, const cha + + threads_starting = nthreads; + pthread_attr_init(&thread_attr); +- gettimeofday(&start, NULL); ++ gettimeofday(&bench__start, NULL); + for (i = 0; i < nthreads; i++) { + worker[i].tid = i; + worker[i].futex = calloc(nfutexes, sizeof(*worker[i].futex)); +@@ -202,7 +202,7 @@ int bench_futex_hash(int argc, const cha + pthread_mutex_destroy(&thread_lock); + + for (i = 0; i < nthreads; i++) { +- unsigned long t = worker[i].ops/runtime.tv_sec; ++ unsigned long t = worker[i].ops / bench__runtime.tv_sec; + update_stats(&throughput_stats, t); + if (!silent) { + if (nfutexes == 1) +--- a/tools/perf/bench/futex-lock-pi.c ++++ b/tools/perf/bench/futex-lock-pi.c +@@ -35,7 +35,6 @@ static bool silent = false, multi = fals + static bool done = false, fshared = false; + static unsigned int nthreads = 0; + static int futex_flag = 0; +-struct timeval start, end, runtime; + static pthread_mutex_t thread_lock; + static unsigned int threads_starting; + static struct stats throughput_stats; +@@ -62,7 +61,7 @@ static void print_summary(void) + + printf("%sAveraged %ld operations/sec (+- %.2f%%), total secs = %d\n", + !silent ? "\n" : "", avg, rel_stddev_stats(stddev, avg), +- (int) runtime.tv_sec); ++ (int)bench__runtime.tv_sec); + } + + static void toggle_done(int sig __maybe_unused, +@@ -71,8 +70,8 @@ static void toggle_done(int sig __maybe_ + { + /* inform all threads that we're done for the day */ + done = true; +- gettimeofday(&end, NULL); +- timersub(&end, &start, &runtime); ++ gettimeofday(&bench__end, NULL); ++ timersub(&bench__end, &bench__start, &bench__runtime); + } + + static void *workerfn(void *arg) +@@ -183,7 +182,7 @@ int bench_futex_lock_pi(int argc, const + + threads_starting = nthreads; + pthread_attr_init(&thread_attr); +- gettimeofday(&start, NULL); ++ gettimeofday(&bench__start, NULL); + + create_threads(worker, thread_attr, cpu); + pthread_attr_destroy(&thread_attr); +@@ -209,7 +208,7 @@ int bench_futex_lock_pi(int argc, const + pthread_mutex_destroy(&thread_lock); + + for (i = 0; i < nthreads; i++) { +- unsigned long t = worker[i].ops/runtime.tv_sec; ++ unsigned long t = worker[i].ops / bench__runtime.tv_sec; + + update_stats(&throughput_stats, t); + if (!silent) diff --git a/queue-4.19/perf-tests-bp_account-make-global-variable-static.patch b/queue-4.19/perf-tests-bp_account-make-global-variable-static.patch new file mode 100644 index 00000000000..64f675cb8e2 --- /dev/null +++ b/queue-4.19/perf-tests-bp_account-make-global-variable-static.patch @@ -0,0 +1,44 @@ +From foo@baz Fri Jun 3 03:36:04 PM CEST 2022 +From: "Daniel Díaz" +Date: Mon, 30 May 2022 16:53:25 -0500 +Subject: perf tests bp_account: Make global variable static +To: gregkh@linuxfoundation.org, sashal@kernel.org, stable@vger.kernel.org +Cc: "Arnaldo Carvalho de Melo" , "Jiri Olsa" , "Adrian Hunter" , "Namhyung Kim" , "Daniel Díaz" , "Peter Zijlstra" , "Ingo Molnar" , "Arnaldo Carvalho de Melo" , "Alexander Shishkin" , "Jiri Olsa" , linux-kernel@vger.kernel.org (open list:PERFORMANCE EVENTS SUBSYSTEM) +Message-ID: <20220530215325.921847-4-daniel.diaz@linaro.org> + +From: Arnaldo Carvalho de Melo + +[ Upstream commit cff20b3151ccab690715cb6cf0f5da5cccb32adf ] + +To fix the build with newer gccs, that without this patch exit with: + + LD /tmp/build/perf/tests/perf-in.o + ld: /tmp/build/perf/tests/bp_account.o:/git/perf/tools/perf/tests/bp_account.c:22: multiple definition of `the_var'; /tmp/build/perf/tests/bp_signal.o:/git/perf/tools/perf/tests/bp_signal.c:38: first defined here + make[4]: *** [/git/perf/tools/build/Makefile.build:145: /tmp/build/perf/tests/perf-in.o] Error 1 + +First noticed in fedora:rawhide/32 with: + + [perfbuilder@a5ff49d6e6e4 ~]$ gcc --version + gcc (GCC) 10.0.1 20200216 (Red Hat 10.0.1-0.8) + +Reported-by: Jiri Olsa +Cc: Adrian Hunter +Cc: Namhyung Kim +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Daniel Díaz +Signed-off-by: Greg Kroah-Hartman +--- + tools/perf/tests/bp_account.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/tools/perf/tests/bp_account.c ++++ b/tools/perf/tests/bp_account.c +@@ -22,7 +22,7 @@ + #include "perf.h" + #include "cloexec.h" + +-volatile long the_var; ++static volatile long the_var; + + static noinline int test_function(void) + { diff --git a/queue-4.19/series b/queue-4.19/series index 2ee605c2ba6..c091dcc2eb3 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -8,3 +8,8 @@ net-af_key-check-encryption-module-availability-cons.patch net-ftgmac100-disable-hardware-checksum-on-ast2600.patch i2c-ismt-provide-a-dma-buffer-for-interrupt-cause-lo.patch drivers-i2c-thunderx-allow-driver-to-work-with-acpi-.patch +assoc_array-fix-bug_on-during-garbage-collect.patch +cfg80211-set-custom-regdomain-after-wiphy-registration.patch +libtraceevent-fix-build-with-binutils-2.35.patch +perf-bench-share-some-global-variables-to-fix-build-with-gcc-10.patch +perf-tests-bp_account-make-global-variable-static.patch