diff options
| author | Richard Weinberger <richard@nod.at> | 2014-07-20 06:56:34 -0400 |
|---|---|---|
| committer | Richard Weinberger <richard@nod.at> | 2014-07-20 06:56:34 -0400 |
| commit | ae5db6d12341684913a78b6537c0b9c22c999b5c (patch) | |
| tree | c3ef7fd6aac9654dc774b5c72c3ed21815d3a705 | |
| parent | d057190925d994b808e1d07e6c76b90a32caac77 (diff) | |
Revert "um: Fix wait_stub_done() error handling"
This reverts commit 0974a9cadc7886f7baaa458bb0c89f5c5f9d458e.
The real for for that issue is to release current->mm->mmap_sem in
fix_range_common().
Signed-off-by: Richard Weinberger <richard@nod.at>
| -rw-r--r-- | arch/um/os-Linux/skas/process.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index d531879a4617..908579f2b0ab 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c | |||
| @@ -54,7 +54,7 @@ static int ptrace_dump_regs(int pid) | |||
| 54 | 54 | ||
| 55 | void wait_stub_done(int pid) | 55 | void wait_stub_done(int pid) |
| 56 | { | 56 | { |
| 57 | int n, status, err, bad_stop = 0; | 57 | int n, status, err; |
| 58 | 58 | ||
| 59 | while (1) { | 59 | while (1) { |
| 60 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED | __WALL)); | 60 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED | __WALL)); |
| @@ -74,8 +74,6 @@ void wait_stub_done(int pid) | |||
| 74 | 74 | ||
| 75 | if (((1 << WSTOPSIG(status)) & STUB_DONE_MASK) != 0) | 75 | if (((1 << WSTOPSIG(status)) & STUB_DONE_MASK) != 0) |
| 76 | return; | 76 | return; |
| 77 | else | ||
| 78 | bad_stop = 1; | ||
| 79 | 77 | ||
| 80 | bad_wait: | 78 | bad_wait: |
| 81 | err = ptrace_dump_regs(pid); | 79 | err = ptrace_dump_regs(pid); |
| @@ -85,10 +83,7 @@ bad_wait: | |||
| 85 | printk(UM_KERN_ERR "wait_stub_done : failed to wait for SIGTRAP, " | 83 | printk(UM_KERN_ERR "wait_stub_done : failed to wait for SIGTRAP, " |
| 86 | "pid = %d, n = %d, errno = %d, status = 0x%x\n", pid, n, errno, | 84 | "pid = %d, n = %d, errno = %d, status = 0x%x\n", pid, n, errno, |
| 87 | status); | 85 | status); |
| 88 | if (bad_stop) | 86 | fatal_sigsegv(); |
| 89 | kill(pid, SIGKILL); | ||
| 90 | else | ||
| 91 | fatal_sigsegv(); | ||
| 92 | } | 87 | } |
| 93 | 88 | ||
| 94 | extern unsigned long current_stub_stack(void); | 89 | extern unsigned long current_stub_stack(void); |
