diff options
Diffstat (limited to 'arch/i386/kernel/entry.S')
-rw-r--r-- | arch/i386/kernel/entry.S | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S index 1e45ff292bc9..3c73dc865ead 100644 --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S | |||
@@ -245,6 +245,9 @@ syscall_exit: | |||
245 | 245 | ||
246 | restore_all: | 246 | restore_all: |
247 | movl EFLAGS(%esp), %eax # mix EFLAGS, SS and CS | 247 | movl EFLAGS(%esp), %eax # mix EFLAGS, SS and CS |
248 | # Warning: OLDSS(%esp) contains the wrong/random values if we | ||
249 | # are returning to the kernel. | ||
250 | # See comments in process.c:copy_thread() for details. | ||
248 | movb OLDSS(%esp), %ah | 251 | movb OLDSS(%esp), %ah |
249 | movb CS(%esp), %al | 252 | movb CS(%esp), %al |
250 | andl $(VM_MASK | (4 << 8) | 3), %eax | 253 | andl $(VM_MASK | (4 << 8) | 3), %eax |