diff options
author | Joe Korty <joe.korty@ccur.com> | 2006-12-06 20:14:04 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:04 -0500 |
commit | 74b47a7844501445d41d704fe7c626f4b1819508 (patch) | |
tree | e05179601b7f541838913aa9874fd9ae69418eb0 /arch | |
parent | 249e83fe839a13b5dc94285daeeaf70f6e54d930 (diff) |
[PATCH] i386: Fix entry.S code with !CONFIG_VM86
The entry.S code at work_notifysig is surely wrong. It drops into unrelated
code if the branch to work_notifysig_v86 is taken, and CONFIG_VM86=n.
[PATCH] Make vm86 support optional
tree 9b5daef5280800a0006343a17f63072658d91a1d
pushed to git Jan 8, 2006, and first appears in 2.6.16
The 'fix' here is to also compile out the vm86 test & branch when
CONFIG_VM86=n.
Signed-off-by: Joe Korty <joe.korty@ccur.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/kernel/entry.S | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S index d7423efaeea4..0220bc8cbb43 100644 --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S | |||
@@ -457,6 +457,7 @@ work_resched: | |||
457 | 457 | ||
458 | work_notifysig: # deal with pending signals and | 458 | work_notifysig: # deal with pending signals and |
459 | # notify-resume requests | 459 | # notify-resume requests |
460 | #ifdef CONFIG_VM86 | ||
460 | testl $VM_MASK, PT_EFLAGS(%esp) | 461 | testl $VM_MASK, PT_EFLAGS(%esp) |
461 | movl %esp, %eax | 462 | movl %esp, %eax |
462 | jne work_notifysig_v86 # returning to kernel-space or | 463 | jne work_notifysig_v86 # returning to kernel-space or |
@@ -467,17 +468,18 @@ work_notifysig: # deal with pending signals and | |||
467 | 468 | ||
468 | ALIGN | 469 | ALIGN |
469 | work_notifysig_v86: | 470 | work_notifysig_v86: |
470 | #ifdef CONFIG_VM86 | ||
471 | pushl %ecx # save ti_flags for do_notify_resume | 471 | pushl %ecx # save ti_flags for do_notify_resume |
472 | CFI_ADJUST_CFA_OFFSET 4 | 472 | CFI_ADJUST_CFA_OFFSET 4 |
473 | call save_v86_state # %eax contains pt_regs pointer | 473 | call save_v86_state # %eax contains pt_regs pointer |
474 | popl %ecx | 474 | popl %ecx |
475 | CFI_ADJUST_CFA_OFFSET -4 | 475 | CFI_ADJUST_CFA_OFFSET -4 |
476 | movl %eax, %esp | 476 | movl %eax, %esp |
477 | #else | ||
478 | movl %esp, %eax | ||
479 | #endif | ||
477 | xorl %edx, %edx | 480 | xorl %edx, %edx |
478 | call do_notify_resume | 481 | call do_notify_resume |
479 | jmp resume_userspace_sig | 482 | jmp resume_userspace_sig |
480 | #endif | ||
481 | 483 | ||
482 | # perform syscall exit tracing | 484 | # perform syscall exit tracing |
483 | ALIGN | 485 | ALIGN |