diff options
author | 2018-06-04 13:33:12 -0700 | |
---|---|---|
committer | 2018-06-04 13:33:12 -0700 | |
commit | c13aca79ff3c4af5fd31a5b2743a90eba6e36a26 (patch) | |
tree | 8f77894f61822d1ae5285c07c801af7c62f71afd /kernel/fork.c | |
parent | Input: elan_i2c_smbus - fix corrupted stack (diff) | |
parent | Input: goodix - add new ACPI id for GPD Win 2 touch screen (diff) | |
download | wireguard-linux-c13aca79ff3c4af5fd31a5b2743a90eba6e36a26.tar.xz wireguard-linux-c13aca79ff3c4af5fd31a5b2743a90eba6e36a26.zip |
Merge branch 'next' into for-linus
Prepare input updates for 4.18 merge window.
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index e5d9d405ae4e..a5d21c42acfc 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -216,10 +216,9 @@ static unsigned long *alloc_thread_stack_node(struct task_struct *tsk, int node) if (!s) continue; -#ifdef CONFIG_DEBUG_KMEMLEAK /* Clear stale pointers from reused stack. */ memset(s->addr, 0, THREAD_SIZE); -#endif + tsk->stack_vm_area = s; return s->addr; } @@ -595,6 +594,8 @@ static void check_mm(struct mm_struct *mm) void __mmdrop(struct mm_struct *mm) { BUG_ON(mm == &init_mm); + WARN_ON_ONCE(mm == current->mm); + WARN_ON_ONCE(mm == current->active_mm); mm_free_pgd(mm); destroy_context(mm); hmm_mm_destroy(mm); @@ -1198,8 +1199,8 @@ void mm_release(struct task_struct *tsk, struct mm_struct *mm) * not set up a proper pointer then tough luck. */ put_user(0, tsk->clear_child_tid); - sys_futex(tsk->clear_child_tid, FUTEX_WAKE, - 1, NULL, NULL, 0); + do_futex(tsk->clear_child_tid, FUTEX_WAKE, + 1, NULL, NULL, 0, 0); } tsk->clear_child_tid = NULL; } @@ -2354,7 +2355,7 @@ static int unshare_fd(unsigned long unshare_flags, struct files_struct **new_fdp * constructed. Here we are modifying the current, active, * task_struct. */ -SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) +int ksys_unshare(unsigned long unshare_flags) { struct fs_struct *fs, *new_fs = NULL; struct files_struct *fd, *new_fd = NULL; @@ -2470,6 +2471,11 @@ bad_unshare_out: return err; } +SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) +{ + return ksys_unshare(unshare_flags); +} + /* * Helper to unshare the files of the current task. * We don't want to expose copy_files internals to |