]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge tag 'pm-urgent-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 29 Jul 2016 21:34:55 +0000 (14:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 29 Jul 2016 21:34:55 +0000 (14:34 -0700)
Pull power management fix from Rafael Wysocki:
 "Fix a nasty (and really hard to debug) memory corruption during resume
  from hibernation on x86-64 (that leads to a kernel panic most of the
  time) due to the use of a stale stack pointer value in FRAME_BEGIN
  (Josh Poimboeuf)"

* tag 'pm-urgent-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  x86/power/64: Fix hibernation return address corruption

arch/x86/power/hibernate_asm_64.S

index 3177c2bc26f63e9fe1bb82739be9c0c2e406f00f..8eee0e9c93f0c857cbbd6b23545ecbfe5d252f7e 100644 (file)
@@ -24,7 +24,6 @@
 #include <asm/frame.h>
 
 ENTRY(swsusp_arch_suspend)
-       FRAME_BEGIN
        movq    $saved_context, %rax
        movq    %rsp, pt_regs_sp(%rax)
        movq    %rbp, pt_regs_bp(%rax)
@@ -48,6 +47,7 @@ ENTRY(swsusp_arch_suspend)
        movq    %cr3, %rax
        movq    %rax, restore_cr3(%rip)
 
+       FRAME_BEGIN
        call swsusp_save
        FRAME_END
        ret
@@ -104,7 +104,6 @@ ENTRY(core_restore_code)
         /* code below belongs to the image kernel */
        .align PAGE_SIZE
 ENTRY(restore_registers)
-       FRAME_BEGIN
        /* go back to the original page tables */
        movq    %r9, %cr3
 
@@ -145,6 +144,5 @@ ENTRY(restore_registers)
        /* tell the hibernation core that we've just restored the memory */
        movq    %rax, in_suspend(%rip)
 
-       FRAME_END
        ret
 ENDPROC(restore_registers)