diff options
author | Will Deacon <will.deacon@arm.com> | 2013-05-13 20:16:34 +0200 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2013-07-22 11:49:00 +0200 |
commit | 377747c40657eb35ad98a56439606d96a928425a (patch) | |
tree | 04a17c4d94a69f772e770c1ca20776300304589c | |
parent | Linux 3.11-rc2 (diff) | |
download | linux-377747c40657eb35ad98a56439606d96a928425a.tar.xz linux-377747c40657eb35ad98a56439606d96a928425a.zip |
ARM: entry: allow ARM-private syscalls to be restarted
System calls will only be restarted after signal handling if they (a)
return an error code indicating that a restart is required and (b) have
`why' set to a non-zero value, to indicate that the signal interrupted
them.
This patch leaves `why' set to a non-zero value for ARM-private syscalls
, and only zeroes it for syscalls that are not implemented.
Signed-off-by: Will Deacon <will.deacon@arm.com>
-rw-r--r-- | arch/arm/kernel/entry-common.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 94104bf69719..74ad15d1a065 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -442,10 +442,10 @@ local_restart: ldrcc pc, [tbl, scno, lsl #2] @ call sys_* routine add r1, sp, #S_OFF -2: mov why, #0 @ no longer a real syscall cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE) eor r0, scno, #__NR_SYSCALL_BASE @ put OS number back - bcs arm_syscall + bcs arm_syscall +2: mov why, #0 @ no longer a real syscall b sys_ni_syscall @ not private func #if defined(CONFIG_OABI_COMPAT) || !defined(CONFIG_AEABI) |