]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Nov 2017 08:42:45 +0000 (09:42 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Nov 2017 08:42:45 +0000 (09:42 +0100)
added patches:
x86-oprofile-ppro-do-not-use-__this_cpu-in-preemptible-context.patch

queue-3.18/series
queue-3.18/x86-oprofile-ppro-do-not-use-__this_cpu-in-preemptible-context.patch [new file with mode: 0644]

index 7d24fb515107479069eaa794861b5cbfcc0dd1a7..a67b624c59f1cacbb32460387bea85708198a895 100644 (file)
@@ -25,3 +25,4 @@ mips-fix-cm-region-target-definitions.patch
 mips-ar7-ensure-that-serial-ports-are-properly-set-up.patch
 rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch
 can-c_can-don-t-indicate-triple-sampling-support-for-d_can.patch
+x86-oprofile-ppro-do-not-use-__this_cpu-in-preemptible-context.patch
diff --git a/queue-3.18/x86-oprofile-ppro-do-not-use-__this_cpu-in-preemptible-context.patch b/queue-3.18/x86-oprofile-ppro-do-not-use-__this_cpu-in-preemptible-context.patch
new file mode 100644 (file)
index 0000000..733a255
--- /dev/null
@@ -0,0 +1,56 @@
+From a743bbeef27b9176987ec0cb7f906ab0ab52d1da Mon Sep 17 00:00:00 2001
+From: Borislav Petkov <bp@suse.de>
+Date: Tue, 7 Nov 2017 18:53:07 +0100
+Subject: x86/oprofile/ppro: Do not use __this_cpu*() in preemptible context
+
+From: Borislav Petkov <bp@suse.de>
+
+commit a743bbeef27b9176987ec0cb7f906ab0ab52d1da upstream.
+
+The warning below says it all:
+
+  BUG: using __this_cpu_read() in preemptible [00000000] code: swapper/0/1
+  caller is __this_cpu_preempt_check
+  CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.0-rc8 #4
+  Call Trace:
+   dump_stack
+   check_preemption_disabled
+   ? do_early_param
+   __this_cpu_preempt_check
+   arch_perfmon_init
+   op_nmi_init
+   ? alloc_pci_root_info
+   oprofile_arch_init
+   oprofile_init
+   do_one_initcall
+   ...
+
+These accessors should not have been used in the first place: it is PPro so
+no mixed silicon revisions and thus it can simply use boot_cpu_data.
+
+Reported-by: Fengguang Wu <fengguang.wu@intel.com>
+Tested-by: Fengguang Wu <fengguang.wu@intel.com>
+Fix-creation-mandated-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Robert Richter <rric@kernel.org>
+Cc: x86@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/oprofile/op_model_ppro.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/oprofile/op_model_ppro.c
++++ b/arch/x86/oprofile/op_model_ppro.c
+@@ -212,8 +212,8 @@ static void arch_perfmon_setup_counters(
+       eax.full = cpuid_eax(0xa);
+       /* Workaround for BIOS bugs in 6/15. Taken from perfmon2 */
+-      if (eax.split.version_id == 0 && __this_cpu_read(cpu_info.x86) == 6 &&
+-              __this_cpu_read(cpu_info.x86_model) == 15) {
++      if (eax.split.version_id == 0 && boot_cpu_data.x86 == 6 &&
++          boot_cpu_data.x86_model == 15) {
+               eax.split.version_id = 2;
+               eax.split.num_counters = 2;
+               eax.split.bit_width = 40;