Skip to content

Commit a7c4c0d

Browse files
author
H. Peter Anvin
committed
x86, sleep: Always save the value of EFER
Always save the value of EFER, regardless of the state of NX. Since EFER may not actually exist, use rdmsr_safe() to do so. v2: check the return value from rdmsr_safe() instead of relying on the output values being unchanged on error. Signed-off-by: H. Peter Anvin <[email protected]> Acked-by: Rafael J. Wysocki <[email protected]> Cc: Pavel Machek <[email protected]> Cc: Nigel Cunningham <[email protected]> LKML-Reference: <[email protected]> Acked-by: Kees Cook <[email protected]>
1 parent 8a50e51 commit a7c4c0d

File tree

1 file changed

+3
-6
lines changed

1 file changed

+3
-6
lines changed

arch/x86/kernel/acpi/sleep.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,9 @@ int acpi_save_state_mem(void)
7878
#ifndef CONFIG_64BIT
7979
store_gdt((struct desc_ptr *)&header->pmode_gdt);
8080

81-
header->pmode_efer_low = nx_enabled;
82-
if (header->pmode_efer_low & 1) {
83-
/* This is strange, why not save efer, always? */
84-
rdmsr(MSR_EFER, header->pmode_efer_low,
85-
header->pmode_efer_high);
86-
}
81+
if (rdmsr_safe(MSR_EFER, &header->pmode_efer_low,
82+
&header->pmode_efer_high))
83+
header->pmode_efer_low = header->pmode_efer_high = 0;
8784
#endif /* !CONFIG_64BIT */
8885

8986
header->pmode_cr0 = read_cr0();

0 commit comments

Comments
 (0)