diff options
| -rw-r--r-- | kernel/fork.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 466531eb92cc..021e1138556e 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
| @@ -568,18 +568,18 @@ void mm_release(struct task_struct *tsk, struct mm_struct *mm) | |||
| 568 | * the value intact in a core dump, and to save the unnecessary | 568 | * the value intact in a core dump, and to save the unnecessary |
| 569 | * trouble otherwise. Userland only wants this done for a sys_exit. | 569 | * trouble otherwise. Userland only wants this done for a sys_exit. |
| 570 | */ | 570 | */ |
| 571 | if (tsk->clear_child_tid | 571 | if (tsk->clear_child_tid) { |
| 572 | && !(tsk->flags & PF_SIGNALED) | 572 | if (!(tsk->flags & PF_SIGNALED) && |
| 573 | && atomic_read(&mm->mm_users) > 1) { | 573 | atomic_read(&mm->mm_users) > 1) { |
| 574 | u32 __user * tidptr = tsk->clear_child_tid; | 574 | /* |
| 575 | * We don't check the error code - if userspace has | ||
| 576 | * not set up a proper pointer then tough luck. | ||
| 577 | */ | ||
| 578 | put_user(0, tsk->clear_child_tid); | ||
| 579 | sys_futex(tsk->clear_child_tid, FUTEX_WAKE, | ||
| 580 | 1, NULL, NULL, 0); | ||
| 581 | } | ||
| 575 | tsk->clear_child_tid = NULL; | 582 | tsk->clear_child_tid = NULL; |
| 576 | |||
| 577 | /* | ||
| 578 | * We don't check the error code - if userspace has | ||
| 579 | * not set up a proper pointer then tough luck. | ||
| 580 | */ | ||
| 581 | put_user(0, tidptr); | ||
| 582 | sys_futex(tidptr, FUTEX_WAKE, 1, NULL, NULL, 0); | ||
| 583 | } | 583 | } |
| 584 | } | 584 | } |
| 585 | 585 | ||
