linux/arch/parisc/kernel
Helge Deller 98e8b6c9ac parisc: Fix ptrace syscall number and return value modification
Mike Frysinger reported that his ptrace testcase showed strange
behaviour on parisc: It was not possible to avoid a syscall and the
return value of a syscall couldn't be changed.

To modify a syscall number, we were missing to save the new syscall
number to gr20 which is then picked up later in assembly again.

The effect that the return value couldn't be changed is a side-effect of
another bug in the assembly code. When a process is ptraced, userspace
expects each syscall to report entrance and exit of a syscall.  If a
syscall number was given which doesn't exist, we jumped to the normal
syscall exit code instead of informing userspace that the (non-existant)
syscall exits. This unexpected behaviour confuses userspace and thus the
bug was misinterpreted as if we can't change the return value.

This patch fixes both problems and was tested on 64bit kernel with
32bit userspace.

Signed-off-by: Helge Deller <deller@gmx.de>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: stable@vger.kernel.org  # v4.0+
Tested-by: Mike Frysinger <vapier@gentoo.org>
2016-03-01 23:06:07 +01:00
..
.gitignore
asm-offsets.c parisc: Map kernel text and data on huge pages 2015-11-22 12:23:19 +01:00
audit.c parisc: add kernel audit feature 2013-11-07 22:27:20 +01:00
binfmt_elf32.c parisc: fix redefinition of SET_PERSONALITY 2013-03-02 20:15:28 +01:00
cache.c parisc: Imporove debug info about space registers and TLB configuration 2016-01-12 22:12:09 +01:00
compat_audit.c parisc: add kernel audit feature 2013-11-07 22:27:20 +01:00
drivers.c parisc: convert to dma_map_ops 2016-01-20 17:09:18 -08:00
entry.S parisc: Add Huge Page and HUGETLBFS support 2015-11-22 12:23:10 +01:00
firmware.c parisc: delete __cpuinit usage from all users 2013-07-14 19:36:51 -04:00
ftrace.c parisc: ftrace: Remove check of obsolete variable function_trace_stop 2014-07-18 13:57:05 -04:00
hardware.c parisc: add serial ports of C8000/1GHz machine to hardware database 2014-07-13 15:51:58 +02:00
head.S parisc: Increase initial kernel mapping to 32MB on 64bit kernel 2015-11-22 12:22:53 +01:00
hpmc.S parisc: fix partly 16/64k PAGE_SIZE boot 2013-05-06 23:08:32 +02:00
inventory.c parisc: Fix interrupt routing for C8000 serial ports 2013-07-31 23:42:32 +02:00
irq.c parisc: Filter out spurious interrupts in PA-RISC irq handler 2015-09-08 15:31:16 +02:00
Makefile parisc: add kernel audit feature 2013-11-07 22:27:20 +01:00
module.c module: use a structure to encapsulate layout. 2015-12-04 22:46:25 +01:00
pa7300lc.c
pacache.S parisc: Use unshadowed index register for flush instructions in flush_dcache_page_asm and flush_icache_page_asm 2013-06-18 20:29:10 +02:00
parisc_ksyms.c parisc: Provide __ucmpdi2 to resolve undefined references in 32 bit builds. 2013-04-25 22:36:15 +02:00
pci-dma.c parisc: convert to dma_map_ops 2016-01-20 17:09:18 -08:00
pci.c parisc: Initialize PCI bridge cache line and default latency 2016-01-12 22:03:21 +01:00
pdc_chassis.c parisc: single_open() leaks 2013-05-05 00:10:41 -04:00
pdc_cons.c parisc: don't use module_init for non-modular core pdc_cons code 2015-06-16 14:12:30 -04:00
perf_asm.S
perf_images.h
perf.c parisc64: don't use module_init for non-modular core perf code 2015-06-16 14:12:30 -04:00
process.c parisc: copy_thread(): rename 'arg' argument to 'kthread_arg' 2015-04-24 13:45:55 +02:00
processor.c parisc: Reduce overhead of parisc_requires_coherency() 2016-01-12 22:03:36 +01:00
ptrace.c parisc: Fix ptrace syscall number and return value modification 2016-03-01 23:06:07 +01:00
real2.S
setup.c parisc: Add Huge Page and HUGETLBFS support 2015-11-22 12:23:10 +01:00
signal32.c constify copy_siginfo_to_user{,32}() 2013-11-09 00:16:29 -05:00
signal32.h constify copy_siginfo_to_user{,32}() 2013-11-09 00:16:29 -05:00
signal.c parisc: Fix syscall restarts 2015-12-21 10:16:18 +01:00
smp.c parisc: Remove unused function 2015-02-17 10:41:19 +01:00
stacktrace.c
sys_parisc32.c parisc: drop unused defines and header includes 2014-07-13 15:56:12 +02:00
sys_parisc.c parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures 2015-05-12 22:03:44 +02:00
syscall_table.S parisc: Wire up mlock2 syscall 2015-12-12 16:07:44 +01:00
syscall.S parisc: Fix ptrace syscall number and return value modification 2016-03-01 23:06:07 +01:00
time.c parisc: Use platform_device_register_simple("rtc-generic") 2015-09-08 17:53:48 +02:00
topology.c
traps.c parisc: Initialize the fault vector earlier in the boot process. 2015-11-22 12:22:43 +01:00
unaligned.c parisc: show number of FPE and unaligned access handler calls in /proc/interrupts 2013-05-24 22:35:26 +02:00
unwind.c parisc: use kernel_text_address() in unwind functions 2013-11-30 22:08:54 +01:00
vmlinux.lds.S parisc: Map kernel text and data on huge pages 2015-11-22 12:23:19 +01:00