1
0
Fork 0
alistair23-linux/arch/m68k/kernel
Greg Ungerer 0b98027122 m68knommu: fix user a5 register being overwritten
On no-MMU systems the application a5 register can be overwitten with the
address of the process data segment when processing application signals.
For flat format applications compiled with full absolute relocation this
effectively corrupts the a5 register on signal processing - and this very
quickly leads to process crash and often takes out the whole system with
a panic as well.

This has no effect on flat format applications compiled with the more
common PIC methods (such as -msep-data). These format applications reserve
a5 for the pointer to the data segment anyway - so it doesn't change it.

A long time ago the a5 register was used in the code packed into the user
stack to enable signal return processing. And so it had to be restored on
end of signal cleanup processing back to the original a5 user value. This
was historically done by saving away a5 in the sigcontext structure. At
some point (a long time back it seems) the a5 restore process was changed
and it was hard coded to put the user data segment address directly into a5.
Which is ok for the common PIC compiled application case, but breaks the
full relocation application code.

We no longer use this type of signal handling mechanism and so we don't
need to do anything special to save and restore a5 at all now. So remove the
code that hard codes a5 to the address of the user data segment.

Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
2016-08-08 12:38:47 +10:00
..
.gitignore m68k: Add vmlinux.lds to .gitignore 2009-01-12 20:56:32 +01:00
Makefile m68k: Multi-platform EARLY_PRINTK 2014-05-28 10:10:04 +02:00
asm-offsets.c m68k: Add kexec support 2013-12-08 11:01:47 +01:00
bootinfo_proc.c m68k/bootinfo: Use kmemdup rather than duplicating its implementation 2015-08-10 10:26:33 +02:00
dma.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
early_printk.c m68knommu: remove obsolete 68360 support 2016-03-07 10:07:17 +10:00
entry.S m68k: Use conventional function parameters for do_sigreturn 2016-02-29 09:51:43 +01:00
head.S m68k: Fix boot regression on machines with RAM at non-zero 2014-07-10 09:58:26 +02:00
ints.c m68k: Do not rely on magic indirect includes 2014-03-05 13:28:32 +01:00
irq.c Disintegrate asm/system.h for M68K 2012-03-28 18:30:02 +01:00
m68k_ksyms.c m68k: handle presence of 64bit mul/div instructions cleanly 2011-12-24 21:47:57 +10:00
machine_kexec.c m68k: Add kexec support 2013-12-08 11:01:47 +01:00
module.c module.c: spelling s/postition/position/g 2012-07-20 10:38:35 +02:00
module.lds m68k: runtime patching infrastructure 2007-05-31 07:58:13 -07:00
pcibios.c m68k/pci: Remove a superflous KERN_ERR 2015-03-15 10:24:50 +01:00
process.c m68k: Use generic idle loop 2013-04-08 17:39:26 +02:00
ptrace.c m68k: make syscall_trace_enter/leave exist for non-MMU classic m68k types 2012-06-12 11:58:29 +10:00
relocate_kernel.S m68k: Add kexec support 2013-12-08 11:01:47 +01:00
setup.c m68k: merge m68k and m68knommu arch directories 2011-03-25 14:05:13 +10:00
setup_mm.c m68k: Add support to export bootinfo in procfs 2013-12-08 11:01:48 +01:00
setup_no.c m68knommu: remove obsolete 68360 support 2016-03-07 10:07:17 +10:00
signal.c m68knommu: fix user a5 register being overwritten 2016-08-08 12:38:47 +10:00
sun3-head.S m68k: arch/m68k/kernel/sun3-head.S needs <linux/init.h> 2009-04-28 16:07:18 -07:00
sys_m68k.c m68k: call find_vma with the mmap_sem held in sys_cacheflush() 2014-10-09 22:26:02 -04:00
syscalltable.S m68k: Wire up preadv2 and pwritev2 2016-04-07 11:44:44 +02:00
time.c rtc: m68k: provide ioctl for q40 2016-06-04 00:23:22 +02:00
traps.c m68k: Convert arch/m68k/kernel/traps.c to pr_*() 2013-12-30 21:01:11 +01:00
vectors.c Disintegrate asm/system.h for M68K 2012-03-28 18:30:02 +01:00
vmlinux-nommu.lds m68k: Replace m68k-specific _[se]bss by generic __bss_{start,stop} 2012-06-27 09:59:43 +02:00
vmlinux-std.lds m68k: Replace m68k-specific _[se]bss by generic __bss_{start,stop} 2012-06-27 09:59:43 +02:00
vmlinux-sun3.lds m68k: Replace m68k-specific _[se]bss by generic __bss_{start,stop} 2012-06-27 09:59:43 +02:00
vmlinux.lds.S m68k: use non-MMU linker script for ColdFire MMU builds 2011-12-30 10:20:44 +10:00