* Linus Torvalds [off-list ref] wrote:
On Jun 13, 2015 8:56 PM, "Ingo Molnar" [off-list ref] wrote:
quoted
Ok, so something like the patch below, right?
movw $__KERNEL_DS, %ax
movw %ax, %ss
- movw %ax, %ds
- movw %ax, %es
movw %ax, %fs
movw %ax, %gs
+ movw $__KERNEL_DS, %ax
+ movw %ax, %ds
+ movw %ax, %es
.. except with less cut-and-paste bugs.
That second KERNEL should be USER.
Yeah, doh :-/ Updated patch below.
Thanks,
Ingo
=====
arch/x86/kernel/acpi/wakeup_32.S | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S
index 665c6b7d2ea9..0c26b1b44e51 100644
--- a/arch/x86/kernel/acpi/wakeup_32.S
+++ b/arch/x86/kernel/acpi/wakeup_32.S
@@ -12,11 +12,13 @@ ENTRY(wakeup_pmode_return)
wakeup_pmode_return:
movw $__KERNEL_DS, %ax
movw %ax, %ss
- movw %ax, %ds
- movw %ax, %es
movw %ax, %fs
movw %ax, %gs
+ movw $__USER_DS, %ax
+ movw %ax, %ds
+ movw %ax, %es
+
# reload the gdt, as we need the full 32 bit address
lidt saved_idt
lldt saved_ldt