ARC: [Review] Prevent incorrect syscall restarts
authorVineet Gupta <vgupta@synopsys.com>
Fri, 18 Jan 2013 09:42:19 +0000 (15:12 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Fri, 15 Feb 2013 17:45:50 +0000 (23:15 +0530)
commit55bb9480f9159b229ac3c3454c97b62d1e0a7e80
tree4de8a97445bb41f250cdadba78169d0463bd244b
parent5c39c0ab5e862cf71cda1fc39a5cedd4e2f18c6e
ARC: [Review] Prevent incorrect syscall restarts

Per Al Viro's "signals for dummies" https://lkml.org/lkml/2012/12/6/366
there are 3 golden rules for (not) restarting syscalls:

" What we need to guarantee is
* restarts do not happen on signals caught in interrupts or exceptions
* restarts do not happen on signals caught in sigreturn()
* restart should happen only once, even if we get through do_signal()
  many times."

ARC Port already handled #1, this patch fixes #2 and #3.

We use the additional state in pt_regs->orig_r8 to ckh if restarting
has already been done once.

Thanks to Al Viro for spotting this.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
arch/arc/include/asm/ptrace.h
arch/arc/kernel/signal.c