linux-kernel-test/arch
Philippe Rétornaz a7e30b8d91 [AVR32] Fix random segfault with preemption
As explained on:
http://www.avrfreaks.net/index.php?nameÿphpBB2&fileÿewtopic&tS307
If the current process is preempted before it can copy RAR_SUP and
RSR_SUP both register are lost and the process will segfault as soon
as it return from the syscall since the return adress will be
corrupted.

This patch disable IRQ as soon as we enter the syscall path and
reenable them when the copy is done.

In the interrupt handlers, check if we are interrupting the srrf
instruction, if so disable interrupts and return. The interrupt
handler will be re-called immediatly when the interrupts are
reenabled.

After some stressing workload:
 - find / > /dev/null in loop
 - top (in ssh)
 - ping -f avr32

The segfaults are not seen anymore.

Signed-off-by: Philippe Rétornaz <philippe.retornaz@epfl.ch>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
2007-10-11 13:32:56 +02:00
..
alpha alpha: -Werror fixes for sys_titan.c 2007-08-11 15:47:42 -07:00
arm [ARM] 4598/2: OSIRIS: Ensure we do not get nRSTOUT during suspend 2007-10-05 21:21:43 +01:00
avr32 [AVR32] Fix random segfault with preemption 2007-10-11 13:32:56 +02:00
blackfin Blackfin arch: fix PORT_J BUG for BF537/6 EMAC driver reported by Kalle Pokki <kalle.pokki@iki.fi> 2007-10-04 00:36:18 +08:00
cris ide: fix hidden dependencies on CONFIG_IDE_GENERIC 2007-08-20 22:42:54 +02:00
frv FRV: connect up fallocate 2007-08-11 15:47:40 -07:00
h8300 H8/300: Fix misnamed "CONFIG_BLKDEV_RESERVE_ADDRESS" Kconfig variable 2007-09-11 17:21:20 -07:00
i386 Longhaul: add auto enabled "revid_errata" option 2007-10-07 16:28:43 -07:00
ia64 Fix spurious syscall tracing after PTRACE_DETACH + PTRACE_ATTACH 2007-09-10 18:57:47 -07:00
m32r m32r: Rename STI/CLI macros 2007-09-06 11:10:56 +09:00
m68k m68k(nommu): add missing syscalls 2007-09-11 17:21:20 -07:00
m68knommu m68k(nommu): add missing syscalls 2007-09-11 17:21:20 -07:00
mips [MIPS] Au1000: set the PCI controller IO base 2007-10-09 12:47:48 +01:00
parisc [PARISC] Add NOTES section 2007-08-27 00:29:25 -04:00
powerpc [POWERPC] Fix xics set_affinity code 2007-10-02 11:48:14 +10:00
ppc [PPC] Fix cpm_dpram_addr returning phys mem instead of virt mem 2007-09-28 10:25:32 -05:00
s390 [S390] kprobes: fix instruction length calculation 2007-08-22 13:51:49 +02:00
sh sh: missing symbol fix for sh4-202 2007-08-22 13:32:07 +09:00
sh64 sh64: arch/sh64/kernel/setup.c: duplicate include removal. 2007-08-12 12:18:54 +09:00
sparc [SPARC]: Fix EBUS use of uninitialized variable. 2007-09-27 13:09:28 -07:00
sparc64 [SPARC64]: Fix 'niu' complex IRQ probing. 2007-10-04 15:03:35 -07:00
um uml: fix irqstack crash 2007-09-19 11:24:18 -07:00
v850 PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
x86_64 x86_64: increase VDSO_TEXT_OFFSET for ancient binutils 2007-10-01 19:21:30 -07:00
xtensa xtensa process.c must #include <linux/fs.h> 2007-08-30 09:58:22 -07:00