|
@@ -27,6 +27,7 @@
|
|
|
#include <asm/uaccess.h>
|
|
|
#include <asm/i387.h>
|
|
|
#include <asm/vdso.h>
|
|
|
+#include <asm/syscall.h>
|
|
|
#include <asm/syscalls.h>
|
|
|
|
|
|
#include "sigframe.h"
|
|
@@ -507,9 +508,9 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka,
|
|
|
int ret;
|
|
|
|
|
|
/* Are we from a system call? */
|
|
|
- if ((long)regs->orig_ax >= 0) {
|
|
|
+ if (syscall_get_nr(current, regs) >= 0) {
|
|
|
/* If so, check system call restarting.. */
|
|
|
- switch (regs->ax) {
|
|
|
+ switch (syscall_get_error(current, regs)) {
|
|
|
case -ERESTART_RESTARTBLOCK:
|
|
|
case -ERESTARTNOHAND:
|
|
|
regs->ax = -EINTR;
|
|
@@ -623,9 +624,9 @@ static void do_signal(struct pt_regs *regs)
|
|
|
}
|
|
|
|
|
|
/* Did we come from a system call? */
|
|
|
- if ((long)regs->orig_ax >= 0) {
|
|
|
+ if (syscall_get_nr(current, regs) >= 0) {
|
|
|
/* Restart the system call - no handlers present */
|
|
|
- switch (regs->ax) {
|
|
|
+ switch (syscall_get_error(current, regs)) {
|
|
|
case -ERESTARTNOHAND:
|
|
|
case -ERESTARTSYS:
|
|
|
case -ERESTARTNOINTR:
|