diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index 37dd6408f5f607ea58d84fd0d61b140ae3f8c7e6..770d687ee9f3c42e3ee651817ef424bf62132bbd 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -149,25 +149,12 @@ struct kernfs_node *kernfs_get_active(struct kernfs_node *kn)
 	if (unlikely(!kn))
 		return NULL;
 
-	if (kernfs_lockdep(kn))
-		rwsem_acquire_read(&kn->dep_map, 0, 1, _RET_IP_);
-
-	/*
-	 * Try to obtain an active ref.  If @kn is deactivated, we block
-	 * till either it's reactivated or killed.
-	 */
-	do {
-		if (atomic_inc_unless_negative(&kn->active))
-			return kn;
-
-		wait_event(kernfs_root(kn)->deactivate_waitq,
-			   atomic_read(&kn->active) >= 0 ||
-			   RB_EMPTY_NODE(&kn->rb));
-	} while (!RB_EMPTY_NODE(&kn->rb));
+	if (!atomic_inc_unless_negative(&kn->active))
+		return NULL;
 
 	if (kernfs_lockdep(kn))
-		rwsem_release(&kn->dep_map, 1, _RET_IP_);
-	return NULL;
+		rwsem_acquire_read(&kn->dep_map, 0, 1, _RET_IP_);
+	return kn;
 }
 
 /**
@@ -799,7 +786,6 @@ static void __kernfs_deactivate(struct kernfs_node *kn)
 
 static void __kernfs_remove(struct kernfs_node *kn)
 {
-	struct kernfs_root *root = kernfs_root(kn);
 	struct kernfs_node *pos;
 
 	lockdep_assert_held(&kernfs_mutex);
@@ -851,9 +837,6 @@ static void __kernfs_remove(struct kernfs_node *kn)
 
 		kernfs_put(pos);
 	} while (pos != kn);
-
-	/* some nodes killed, kick get_active waiters */
-	wake_up_all(&root->deactivate_waitq);
 }
 
 /**