From: Greg Kroah-Hartman Date: Tue, 16 Feb 2021 15:35:09 +0000 (+0100) Subject: 4.9-stable patches X-Git-Tag: v5.4.99~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7a4ca9e7e8c87451900b947a6b5d9286fddf0306;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: trace-use-mcount-record-for-dynamic-ftrace.patch tracing-avoid-calling-cc-option-mrecord-mcount-for-every-makefile.patch tracing-fix-skip_stack_validation-1-build-due-to-bad-merge-with-mrecord-mcount.patch --- diff --git a/queue-4.9/series b/queue-4.9/series index fc79ba54e42..8326ec2a7f2 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -33,3 +33,6 @@ net-watchdog-hold-device-global-xmit-lock-during-tx-disable.patch vsock-virtio-update-credit-only-if-socket-is-not-closed.patch vsock-fix-locking-in-vsock_shutdown.patch x86-build-disable-cet-instrumentation-in-the-kernel-for-32-bit-too.patch +trace-use-mcount-record-for-dynamic-ftrace.patch +tracing-fix-skip_stack_validation-1-build-due-to-bad-merge-with-mrecord-mcount.patch +tracing-avoid-calling-cc-option-mrecord-mcount-for-every-makefile.patch diff --git a/queue-4.9/trace-use-mcount-record-for-dynamic-ftrace.patch b/queue-4.9/trace-use-mcount-record-for-dynamic-ftrace.patch new file mode 100644 index 00000000000..9f51b26a044 --- /dev/null +++ b/queue-4.9/trace-use-mcount-record-for-dynamic-ftrace.patch @@ -0,0 +1,54 @@ +From 96f60dfa5819a065bfdd2f2ba0df7d9cbce7f4dd Mon Sep 17 00:00:00 2001 +From: Andi Kleen +Date: Mon, 27 Nov 2017 13:34:13 -0800 +Subject: trace: Use -mcount-record for dynamic ftrace + +From: Andi Kleen + +commit 96f60dfa5819a065bfdd2f2ba0df7d9cbce7f4dd upstream. + +gcc 5 supports a new -mcount-record option to generate ftrace +tables directly. This avoids the need to run record_mcount +manually. + +Use this option when available. + +So far doesn't use -mcount-nop, which also exists now. + +This is needed to make ftrace work with LTO because the +normal record-mcount script doesn't run over the link +time output. + +It should also improve build times slightly in the general +case. +Link: http://lkml.kernel.org/r/20171127213423.27218-12-andi@firstfloor.org + +Signed-off-by: Andi Kleen +Signed-off-by: Steven Rostedt (VMware) +Signed-off-by: Greg Kroah-Hartman +--- + scripts/Makefile.build | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/scripts/Makefile.build ++++ b/scripts/Makefile.build +@@ -222,6 +222,11 @@ cmd_modversions_c = \ + endif + + ifdef CONFIG_FTRACE_MCOUNT_RECORD ++# gcc 5 supports generating the mcount tables directly ++ifneq ($(call cc-option,-mrecord-mcount,y),y) ++KBUILD_CFLAGS += -mrecord-mcount ++else ++# else do it all manually + ifdef BUILD_C_RECORDMCOUNT + ifeq ("$(origin RECORDMCOUNT_WARN)", "command line") + RECORDMCOUNT_FLAGS = -w +@@ -264,6 +269,7 @@ endif + ifdef CONFIG_GCOV_KERNEL + objtool_args += --no-unreachable + endif ++endif + + # 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory + # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file diff --git a/queue-4.9/tracing-avoid-calling-cc-option-mrecord-mcount-for-every-makefile.patch b/queue-4.9/tracing-avoid-calling-cc-option-mrecord-mcount-for-every-makefile.patch new file mode 100644 index 00000000000..5d95e1b51b7 --- /dev/null +++ b/queue-4.9/tracing-avoid-calling-cc-option-mrecord-mcount-for-every-makefile.patch @@ -0,0 +1,76 @@ +From 07d0408120216b60625c9a5b8012d1c3a907984d Mon Sep 17 00:00:00 2001 +From: Vasily Gorbik +Date: Mon, 6 Aug 2018 15:17:44 +0200 +Subject: tracing: Avoid calling cc-option -mrecord-mcount for every Makefile + +From: Vasily Gorbik + +commit 07d0408120216b60625c9a5b8012d1c3a907984d upstream. + +Currently if CONFIG_FTRACE_MCOUNT_RECORD is enabled -mrecord-mcount +compiler flag support is tested for every Makefile. + +Top 4 cc-option usages: + 511 -mrecord-mcount + 11 -fno-stack-protector + 9 -Wno-override-init + 2 -fsched-pressure + +To address that move cc-option from scripts/Makefile.build to top Makefile +and export CC_USING_RECORD_MCOUNT to be used in original place. + +While doing that also add -mrecord-mcount to CC_FLAGS_FTRACE (if gcc +actually supports it). + +Link: http://lkml.kernel.org/r/patch-2.thread-aa7b8d.git-de935bace15a.your-ad-here.call-01533557518-ext-9465@work.hours + +Acked-by: Andi Kleen +Signed-off-by: Vasily Gorbik +Signed-off-by: Steven Rostedt (VMware) +Signed-off-by: Greg Kroah-Hartman +--- + Makefile | 7 +++++++ + scripts/Makefile.build | 9 +++------ + 2 files changed, 10 insertions(+), 6 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -762,6 +762,13 @@ ifdef CONFIG_FUNCTION_TRACER + ifndef CC_FLAGS_FTRACE + CC_FLAGS_FTRACE := -pg + endif ++ifdef CONFIG_FTRACE_MCOUNT_RECORD ++ # gcc 5 supports generating the mcount tables directly ++ ifeq ($(call cc-option-yn,-mrecord-mcount),y) ++ CC_FLAGS_FTRACE += -mrecord-mcount ++ export CC_USING_RECORD_MCOUNT := 1 ++ endif ++endif + export CC_FLAGS_FTRACE + ifdef CONFIG_HAVE_FENTRY + CC_USING_FENTRY := $(call cc-option, -mfentry -DCC_USING_FENTRY) +--- a/scripts/Makefile.build ++++ b/scripts/Makefile.build +@@ -222,11 +222,8 @@ cmd_modversions_c = \ + endif + + ifdef CONFIG_FTRACE_MCOUNT_RECORD +-# gcc 5 supports generating the mcount tables directly +-ifneq ($(call cc-option,-mrecord-mcount,y),y) +-KBUILD_CFLAGS += -mrecord-mcount +-else +-# else do it all manually ++ifndef CC_USING_RECORD_MCOUNT ++# compiler will not generate __mcount_loc use recordmcount or recordmcount.pl + ifdef BUILD_C_RECORDMCOUNT + ifeq ("$(origin RECORDMCOUNT_WARN)", "command line") + RECORDMCOUNT_FLAGS = -w +@@ -255,7 +252,7 @@ cmd_record_mcount = \ + "$(CC_FLAGS_FTRACE)" ]; then \ + $(sub_cmd_record_mcount) \ + fi; +-endif # -record-mcount ++endif # CC_USING_RECORD_MCOUNT + endif + + ifdef CONFIG_STACK_VALIDATION diff --git a/queue-4.9/tracing-fix-skip_stack_validation-1-build-due-to-bad-merge-with-mrecord-mcount.patch b/queue-4.9/tracing-fix-skip_stack_validation-1-build-due-to-bad-merge-with-mrecord-mcount.patch new file mode 100644 index 00000000000..71b94c495db --- /dev/null +++ b/queue-4.9/tracing-fix-skip_stack_validation-1-build-due-to-bad-merge-with-mrecord-mcount.patch @@ -0,0 +1,50 @@ +From ed7d40bc67b8353c677b38c6cdddcdc310c0f452 Mon Sep 17 00:00:00 2001 +From: Greg Thelen +Date: Fri, 8 Jun 2018 14:47:46 -0700 +Subject: tracing: Fix SKIP_STACK_VALIDATION=1 build due to bad merge with -mrecord-mcount + +From: Greg Thelen + +commit ed7d40bc67b8353c677b38c6cdddcdc310c0f452 upstream. + +Non gcc-5 builds with CONFIG_STACK_VALIDATION=y and +SKIP_STACK_VALIDATION=1 fail. +Example output: + /bin/sh: init/.tmp_main.o: Permission denied + +commit 96f60dfa5819 ("trace: Use -mcount-record for dynamic ftrace"), +added a mismatched endif. This causes cmd_objtool to get mistakenly +set. + +Relocate endif to balance the newly added -record-mcount check. + +Link: http://lkml.kernel.org/r/20180608214746.136554-1-gthelen@google.com + +Fixes: 96f60dfa5819 ("trace: Use -mcount-record for dynamic ftrace") +Acked-by: Andi Kleen +Tested-by: David Rientjes +Signed-off-by: Greg Thelen +Signed-off-by: Steven Rostedt (VMware) +Signed-off-by: Greg Kroah-Hartman +--- + scripts/Makefile.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/scripts/Makefile.build ++++ b/scripts/Makefile.build +@@ -255,6 +255,7 @@ cmd_record_mcount = \ + "$(CC_FLAGS_FTRACE)" ]; then \ + $(sub_cmd_record_mcount) \ + fi; ++endif # -record-mcount + endif + + ifdef CONFIG_STACK_VALIDATION +@@ -269,7 +270,6 @@ endif + ifdef CONFIG_GCOV_KERNEL + objtool_args += --no-unreachable + endif +-endif + + # 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory + # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file