x86: Fix rflags in FAKE_STACK_FRAME
authorSeiichi Ikarashi <s.ikarashi@jp.fujitsu.com>
Tue, 6 Dec 2011 08:58:14 +0000 (17:58 +0900)
committerIngo Molnar <mingo@elte.hu>
Tue, 6 Dec 2011 09:02:38 +0000 (10:02 +0100)
commit1cf8343f55525c09c88da0a494a96e1b034f84e2
tree5cb45ead7d10d3021fd2a9424c47d25eefa4201f
parentcc3a1bf52a9d2808c7cd6e8f413b02b650b6b84b
x86: Fix rflags in FAKE_STACK_FRAME

The x86_64 kernel pushes the fake kernel stack in
arch/x86/kernel/entry_64.S:FAKE_STACK_FRAME, and
rflags register in it does not conform to the specification.

Although Intel's manual[1] says bit 1 of it shall be set to 1,
this bit is cleared to 0 on pushing the fake stack.

[1] Intel(R) 64 and IA-32 Architectures Software Developer's Manual
    Vol.1 3-21 Figure 3-8. EFLAGS Register

If it is not on purpose, it is better to be fixed, because
it can lead some tools misunderstanding the stack frame. For example,
"crash" utility[2] actually detects it and warns you like
below:

       RIP: ffffffff8005dfa2  RSP: ffff8104ce0c7f58  RFLAGS: 00000200
       [...]

       bt: WARNING: possibly bogus exception frame

Signed-off-by: Seiichi Ikarashi <s.ikarashi@jp.fujitsu.com>
Tested-by: Masayoshi MIZUMA <m.mizuma@jp.fujitsu.com>
Cc: Jan Beulich <JBeulich@suse.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/include/asm/processor-flags.h
arch/x86/kernel/entry_64.S
arch/x86/kernel/process.c
drivers/lguest/x86/core.c