Revert "kernfs: make kernfs_get_active() block if the node is deactivated but not removed"

This reverts commit 895a068a524e134900b9d98b519309b7aae7bbb1.

Tejun writes:
        I'm sorry but can you please revert the whole series?
        get_active() waiting while a node is deactivated has potential
        to lead to deadlock and that deactivate/reactivate interface is
        something fundamentally flawed and that cgroup will have to work
        with the remove_self() like everybody else.  IOW, I think the
        first posting was correct.

Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index 37dd640..770d687 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -149,25 +149,12 @@
 	if (unlikely(!kn))
 		return NULL;
 
+	if (!atomic_inc_unless_negative(&kn->active))
+		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 (kernfs_lockdep(kn))
-		rwsem_release(&kn->dep_map, 1, _RET_IP_);
-	return NULL;
+	return kn;
 }
 
 /**
@@ -799,7 +786,6 @@
 
 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 @@
 
 		kernfs_put(pos);
 	} while (pos != kn);
-
-	/* some nodes killed, kick get_active waiters */
-	wake_up_all(&root->deactivate_waitq);
 }
 
 /**