{
switch(regs->u_regs[UREG_I0]) {
case ERESTART_RESTARTBLOCK:
- current_thread_info()->restart_block.fn = do_no_restart_syscall;
- /* fallthrough */
case ERESTARTNOHAND:
no_system_call_restart:
regs->u_regs[UREG_I0] = EINTR;
struct k_sigaction *ka;
ka = ¤t->sighand->action[signr-1];
+
+ /* Always make any pending restarted system
+ * calls return -EINTR.
+ */
+ current_thread_info()->restart_block.fn =
+ do_no_restart_syscall;
+
if (cookie.restart_syscall)
syscall_restart(cookie.orig_i0, regs, &ka->sa);
handle_signal(signr, ka, &info, oldset, regs, svr4_signal);
{
switch (regs->u_regs[UREG_I0]) {
case ERESTART_RESTARTBLOCK:
- current_thread_info()->restart_block.fn = do_no_restart_syscall;
- /* fallthrough */
case ERESTARTNOHAND:
no_system_call_restart:
regs->u_regs[UREG_I0] = EINTR;
struct k_sigaction *ka;
ka = ¤t->sighand->action[signr-1];
+
+ /* Always make any pending restarted system
+ * calls return -EINTR.
+ */
+ current_thread_info()->restart_block.fn =
+ do_no_restart_syscall;
+
if (cookie.restart_syscall)
syscall_restart(orig_i0, regs, &ka->sa);
handle_signal(signr, ka, &info, oldset, regs);
{
switch (regs->u_regs[UREG_I0]) {
case ERESTART_RESTARTBLOCK:
- current_thread_info()->restart_block.fn = do_no_restart_syscall;
- /* fallthrough */
case ERESTARTNOHAND:
no_system_call_restart:
regs->u_regs[UREG_I0] = EINTR;
struct k_sigaction *ka;
ka = ¤t->sighand->action[signr-1];
+
+ /* Always make any pending restarted system
+ * calls return -EINTR.
+ */
+ current_thread_info()->restart_block.fn =
+ do_no_restart_syscall;
+
if (cookie.restart_syscall)
syscall_restart32(orig_i0, regs, &ka->sa);
handle_signal32(signr, ka, &info, oldset, regs, svr4_signal);