linux-kernel-test/arch
Igor Mammedov d198d49914 xen: x86_32: do not enable iterrupts when returning from exception in interrupt context
If vmalloc page_fault happens inside of interrupt handler with interrupts
disabled then on exit path from exception handler when there is no pending
interrupts, the following code (arch/x86/xen/xen-asm_32.S:112):

	cmpw $0x0001, XEN_vcpu_info_pending(%eax)
	sete XEN_vcpu_info_mask(%eax)

will enable interrupts even if they has been previously disabled according to
eflags from the bounce frame (arch/x86/xen/xen-asm_32.S:99)

	testb $X86_EFLAGS_IF>>8, 8+1+ESP_OFFSET(%esp)
	setz XEN_vcpu_info_mask(%eax)

Solution is in setting XEN_vcpu_info_mask only when it should be set
according to
	cmpw $0x0001, XEN_vcpu_info_pending(%eax)
but not clearing it if there isn't any pending events.

Reproducer for bug is attached to RHBZ 707552

CC: stable@kernel.org
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2011-09-01 12:54:42 -04:00
..
alpha atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
arm Merge branch 'at91/cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc 2011-07-29 23:32:53 -07:00
avr32 atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
blackfin atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
cris atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
frv atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
h8300 atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
ia64 atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
m32r atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
m68k atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
microblaze Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze 2011-07-27 09:24:20 -07:00
mips atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
mn10300 atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
openrisc OpenRISC: Miscellaneous 2011-07-22 18:46:41 +02:00
parisc atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
powerpc Merge branch 'next/cross-platform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc 2011-07-26 17:12:10 -07:00
s390 atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
score modules: make arch's use default loader hooks 2011-07-24 22:06:04 +09:30
sh atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
sparc sparc: Detect and handle UltraSPARC-T3 cpu types. 2011-07-27 22:10:10 -07:00
tile atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
um ptrace: unify show_regs() prototype 2011-07-26 16:49:43 -07:00
unicore32 modules: make arch's use default loader hooks 2011-07-24 22:06:04 +09:30
x86 xen: x86_32: do not enable iterrupts when returning from exception in interrupt context 2011-09-01 12:54:42 -04:00
xtensa atomic: cleanup asm-generic atomic*.h inclusion 2011-07-26 16:49:47 -07:00
.gitignore
Kconfig