summaryrefslogtreecommitdiff
path: root/arch/x86_64/kernel/machine_kexec.c
diff options
context:
space:
mode:
authorPhilippe Rétornaz <philippe.retornaz@epfl.ch>2007-10-10 18:52:24 -0400
committerHaavard Skinnemoen <hskinnemoen@atmel.com>2007-10-11 13:32:56 +0200
commita7e30b8d91d3291de4543d97849193ebc3ec4c1c (patch)
treeecf3548140022204214b20f6f69dfc67a6e026b9 /arch/x86_64/kernel/machine_kexec.c
parentbb7aa6d47fcd4f9ab18b4ade2ba078f7719f74ca (diff)
downloadlwn-a7e30b8d91d3291de4543d97849193ebc3ec4c1c.tar.gz
lwn-a7e30b8d91d3291de4543d97849193ebc3ec4c1c.zip
[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>
Diffstat (limited to 'arch/x86_64/kernel/machine_kexec.c')
0 files changed, 0 insertions, 0 deletions