mirror of
https://github.com/torvalds/linux.git
synced 2024-12-20 10:01:56 +00:00
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 <hpa@zytor.com> Acked-by: Rafael J. Wysocki <rjw@sisk.pl> Cc: Pavel Machek <pavel@ucw.cz> Cc: Nigel Cunningham <nigel@tuxonice.net> LKML-Reference: <1258154897-6770-3-git-send-email-hpa@zytor.com> Acked-by: Kees Cook <kees.cook@canonical.com>
This commit is contained in:
parent
8a50e5135a
commit
a7c4c0d934
@ -78,12 +78,9 @@ int acpi_save_state_mem(void)
|
||||
#ifndef CONFIG_64BIT
|
||||
store_gdt((struct desc_ptr *)&header->pmode_gdt);
|
||||
|
||||
header->pmode_efer_low = nx_enabled;
|
||||
if (header->pmode_efer_low & 1) {
|
||||
/* This is strange, why not save efer, always? */
|
||||
rdmsr(MSR_EFER, header->pmode_efer_low,
|
||||
header->pmode_efer_high);
|
||||
}
|
||||
if (rdmsr_safe(MSR_EFER, &header->pmode_efer_low,
|
||||
&header->pmode_efer_high))
|
||||
header->pmode_efer_low = header->pmode_efer_high = 0;
|
||||
#endif /* !CONFIG_64BIT */
|
||||
|
||||
header->pmode_cr0 = read_cr0();
|
||||
|
Loading…
Reference in New Issue
Block a user