projects/linux·commit 20cd514d

frv: restart_block.fn needs to be reset on sigreturn

20cd514d · Al Viro <[email protected]> · 2010-09-20 15:13:04 +01:00

Reset restart_block.fn on executing a sigreturn such that any currently
pending system call restarts will be forced to return -EINTR.

Signed-off-by: Al Viro <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
20cd514d0f3d288d968217028ca67b70e707d896
Parents
31c4a3d3

Changes

1 files changed · +3 −0

FileStatusAddDelContent
arch/frv/kernel/signal.cmodified+3−0View file

arch/frv/kernel/signal.c

View file
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c
index 0974c0e..7fc2961 100644
--- a/arch/frv/kernel/signal.c
+++ b/arch/frv/kernel/signal.c
@@ -121,6 +121,9 @@ static int restore_sigcontext(struct sigcontext __user *sc, int *_gr8)
struct user_context *user = current->thread.user;
unsigned long tbr, psr;
+ /* Always make any pending restarted system calls return -EINTR */
+ current_thread_info()->restart_block.fn = do_no_restart_syscall;
+
tbr = user->i.tbr;
psr = user->i.psr;
if (copy_from_user(user, &sc->sc_context, sizeof(sc->sc_context)))