From: Greg Kroah-Hartman Date: Sat, 5 Mar 2016 19:27:41 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v3.10.100~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=69dbb6fa2583fe72d82a55362da4ee624f8dc92a;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch --- diff --git a/queue-3.10/pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch b/queue-3.10/pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch new file mode 100644 index 00000000000..1587e3e270a --- /dev/null +++ b/queue-3.10/pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch @@ -0,0 +1,51 @@ +From 92f9e179a702a6adbc11e2fedc76ecd6ffc9e3f7 Mon Sep 17 00:00:00 2001 +From: Todd E Brandt +Date: Wed, 2 Mar 2016 16:05:29 -0800 +Subject: PM / sleep / x86: Fix crash on graph trace through x86 suspend + +From: Todd E Brandt + +commit 92f9e179a702a6adbc11e2fedc76ecd6ffc9e3f7 upstream. + +Pause/unpause graph tracing around do_suspend_lowlevel as it has +inconsistent call/return info after it jumps to the wakeup vector. +The graph trace buffer will otherwise become misaligned and +may eventually crash and hang on suspend. + +To reproduce the issue and test the fix: +Run a function_graph trace over suspend/resume and set the graph +function to suspend_devices_and_enter. This consistently hangs the +system without this fix. + +Signed-off-by: Todd Brandt +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/acpi/sleep.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/arch/x86/kernel/acpi/sleep.c ++++ b/arch/x86/kernel/acpi/sleep.c +@@ -16,6 +16,7 @@ + #include + #include + ++#include + #include "../../realmode/rm/wakeup.h" + #include "sleep.h" + +@@ -96,7 +97,13 @@ int acpi_suspend_lowlevel(void) + saved_magic = 0x123456789abcdef0L; + #endif /* CONFIG_64BIT */ + ++ /* ++ * Pause/unpause graph tracing around do_suspend_lowlevel as it has ++ * inconsistent call/return info after it jumps to the wakeup vector. ++ */ ++ pause_graph_tracing(); + do_suspend_lowlevel(); ++ unpause_graph_tracing(); + return 0; + } + diff --git a/queue-3.10/series b/queue-3.10/series index 4495f3ad8ff..b130535bca1 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -5,3 +5,4 @@ x86-entry-compat-add-missing-clac-to-entry_int80_32.patch drm-ast-fix-incorrect-register-check-for-dram-width.patch libata-fix-hdio_get_32bit-ioctl.patch libata-align-ata_device-s-id-on-a-cacheline.patch +pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch