diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h
index 678e1d3..0b9f0dc 100644
--- a/include/linux/nsproxy.h
+++ b/include/linux/nsproxy.h
@@ -35,30 +35,22 @@
 int copy_namespaces(int flags, struct task_struct *tsk);
 void get_task_namespaces(struct task_struct *tsk);
 void free_nsproxy(struct nsproxy *ns);
-struct nsproxy *put_nsproxy(struct nsproxy *ns);
 
-static inline void finalize_put_nsproxy(struct nsproxy *ns)
+static inline void put_nsproxy(struct nsproxy *ns)
 {
-	if (ns)
+	if (atomic_dec_and_test(&ns->count)) {
 		free_nsproxy(ns);
+	}
 }
 
-static inline void put_and_finalize_nsproxy(struct nsproxy *ns)
+static inline void exit_task_namespaces(struct task_struct *p)
 {
-	finalize_put_nsproxy(put_nsproxy(ns));
-}
-
-static inline struct nsproxy *preexit_task_namespaces(struct task_struct *p)
-{
-	return put_nsproxy(p->nsproxy);
-}
-
-static inline void exit_task_namespaces(struct task_struct *p,
-						struct nsproxy *ns)
-{
-	task_lock(p);
-	p->nsproxy = NULL;
-	task_unlock(p);
-	finalize_put_nsproxy(ns);
+	struct nsproxy *ns = p->nsproxy;
+	if (ns) {
+		task_lock(p);
+		p->nsproxy = NULL;
+		task_unlock(p);
+		put_nsproxy(ns);
+	}
 }
 #endif
diff --git a/kernel/exit.c b/kernel/exit.c
index a5bf532..3540172 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -396,7 +396,7 @@
 	current->fs = fs;
 	atomic_inc(&fs->count);
 
-	put_and_finalize_nsproxy(current->nsproxy);
+	exit_task_namespaces(current);
 	current->nsproxy = init_task.nsproxy;
 	get_task_namespaces(current);
 
@@ -853,7 +853,6 @@
 fastcall NORET_TYPE void do_exit(long code)
 {
 	struct task_struct *tsk = current;
-	struct nsproxy *ns;
 	int group_dead;
 
 	profile_task_exit(tsk);
@@ -939,9 +938,8 @@
 
 	tsk->exit_code = code;
 	proc_exit_connector(tsk);
-	ns = preexit_task_namespaces(tsk);
 	exit_notify(tsk);
-	exit_task_namespaces(tsk, ns);
+	exit_task_namespaces(tsk);
 #ifdef CONFIG_NUMA
 	mpol_free(tsk->mempolicy);
 	tsk->mempolicy = NULL;
diff --git a/kernel/fork.c b/kernel/fork.c
index 4cf8684..fc723e5 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1265,7 +1265,7 @@
 	return p;
 
 bad_fork_cleanup_namespaces:
-	put_and_finalize_nsproxy(p->nsproxy);
+	exit_task_namespaces(p);
 bad_fork_cleanup_keys:
 	exit_keys(p);
 bad_fork_cleanup_mm:
@@ -1711,7 +1711,7 @@
 	}
 
 	if (new_nsproxy)
-		put_and_finalize_nsproxy(new_nsproxy);
+		put_nsproxy(new_nsproxy);
 
 bad_unshare_cleanup_ipc:
 	if (new_ipc)
diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c
index 7b05bce..f5b9ee6 100644
--- a/kernel/nsproxy.c
+++ b/kernel/nsproxy.c
@@ -117,7 +117,7 @@
 		goto out_pid;
 
 out:
-	put_and_finalize_nsproxy(old_ns);
+	put_nsproxy(old_ns);
 	return err;
 
 out_pid:
@@ -135,20 +135,6 @@
 	goto out;
 }
 
-struct nsproxy *put_nsproxy(struct nsproxy *ns)
-{
-	if (ns) {
-		if (atomic_dec_and_test(&ns->count)) {
-			if (ns->mnt_ns) {
-				put_mnt_ns(ns->mnt_ns);
-				ns->mnt_ns = NULL;
-			}
-			return ns;
-		}
-	}
-	return NULL;
-}
-
 void free_nsproxy(struct nsproxy *ns)
 {
 	if (ns->mnt_ns)
