Loading arch/x86/kernel/signal_64.c +5 −33 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <asm/proto.h> #include <asm/ia32_unistd.h> #include <asm/mce.h> #include <asm/syscall.h> #include "sigframe.h" #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) Loading Loading @@ -346,35 +347,6 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, return -EFAULT; } /* * Return -1L or the syscall number that @regs is executing. */ static long current_syscall(struct pt_regs *regs) { /* * We always sign-extend a -1 value being set here, * so this is always either -1L or a syscall number. */ return regs->orig_ax; } /* * Return a value that is -EFOO if the system call in @regs->orig_ax * returned an error. This only works for @regs from @current. */ static long current_syscall_ret(struct pt_regs *regs) { #ifdef CONFIG_IA32_EMULATION if (test_thread_flag(TIF_IA32)) /* * Sign-extend the value so (int)-EFOO becomes (long)-EFOO * and will match correctly in comparisons. */ return (int) regs->ax; #endif return regs->ax; } /* * OK, we're invoking a handler */ Loading @@ -386,9 +358,9 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka, int ret; /* Are we from a system call? */ if (current_syscall(regs) >= 0) { if (syscall_get_nr(current, regs) >= 0) { /* If so, check system call restarting.. */ switch (current_syscall_ret(regs)) { switch (syscall_get_error(current, regs)) { case -ERESTART_RESTARTBLOCK: case -ERESTARTNOHAND: regs->ax = -EINTR; Loading Loading @@ -511,9 +483,9 @@ static void do_signal(struct pt_regs *regs) } /* Did we come from a system call? */ if (current_syscall(regs) >= 0) { if (syscall_get_nr(current, regs) >= 0) { /* Restart the system call - no handlers present */ switch (current_syscall_ret(regs)) { switch (syscall_get_error(current, regs)) { case -ERESTARTNOHAND: case -ERESTARTSYS: case -ERESTARTNOINTR: Loading Loading
arch/x86/kernel/signal_64.c +5 −33 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <asm/proto.h> #include <asm/ia32_unistd.h> #include <asm/mce.h> #include <asm/syscall.h> #include "sigframe.h" #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) Loading Loading @@ -346,35 +347,6 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, return -EFAULT; } /* * Return -1L or the syscall number that @regs is executing. */ static long current_syscall(struct pt_regs *regs) { /* * We always sign-extend a -1 value being set here, * so this is always either -1L or a syscall number. */ return regs->orig_ax; } /* * Return a value that is -EFOO if the system call in @regs->orig_ax * returned an error. This only works for @regs from @current. */ static long current_syscall_ret(struct pt_regs *regs) { #ifdef CONFIG_IA32_EMULATION if (test_thread_flag(TIF_IA32)) /* * Sign-extend the value so (int)-EFOO becomes (long)-EFOO * and will match correctly in comparisons. */ return (int) regs->ax; #endif return regs->ax; } /* * OK, we're invoking a handler */ Loading @@ -386,9 +358,9 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka, int ret; /* Are we from a system call? */ if (current_syscall(regs) >= 0) { if (syscall_get_nr(current, regs) >= 0) { /* If so, check system call restarting.. */ switch (current_syscall_ret(regs)) { switch (syscall_get_error(current, regs)) { case -ERESTART_RESTARTBLOCK: case -ERESTARTNOHAND: regs->ax = -EINTR; Loading Loading @@ -511,9 +483,9 @@ static void do_signal(struct pt_regs *regs) } /* Did we come from a system call? */ if (current_syscall(regs) >= 0) { if (syscall_get_nr(current, regs) >= 0) { /* Restart the system call - no handlers present */ switch (current_syscall_ret(regs)) { switch (syscall_get_error(current, regs)) { case -ERESTARTNOHAND: case -ERESTARTSYS: case -ERESTARTNOINTR: Loading