From 617f79de6aff55213bf233cf90d4425507acf56e Mon Sep 17 00:00:00 2001
From: Brian Behlendorf <behlendorf1@llnl.gov>
Date: Sat, 18 Aug 2012 11:05:53 -0700
Subject: [PATCH] Revert "Fix NULL deref in balance_pgdat()"

This reverts commit b8b6e4c453929596b630fa1cca1ee26a532a2ab4.  The
use of the PF_MEMALLOC flag was always a hack to work around memory
reclaim deadlocks.  Those issues are believed to be resolved so this
workaround can be safely reverted.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
---
 module/spl/spl-kmem.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c
index 2d5f751b06..16eb4f8843 100644
--- a/module/spl/spl-kmem.c
+++ b/module/spl/spl-kmem.c
@@ -855,17 +855,14 @@ kv_alloc(spl_kmem_cache_t *skc, int size, int flags)
 		 * been filed at kernel.org to track the issue.
 		 *
 		 * https://bugzilla.kernel.org/show_bug.cgi?id=30702
-		 *
-		 * NOTE: Only set PF_MEMALLOC if it's not already set, and
-		 * then only clear it when we were the one who set it.
 		 */
-		if (!(flags & __GFP_FS) && !(current->flags & PF_MEMALLOC)) {
+		if (!(flags & __GFP_FS))
 			current->flags |= PF_MEMALLOC;
-			ptr = __vmalloc(size, flags|__GFP_HIGHMEM, PAGE_KERNEL);
+
+		ptr = __vmalloc(size, flags | __GFP_HIGHMEM, PAGE_KERNEL);
+
+		if (!(flags & __GFP_FS))
 			current->flags &= ~PF_MEMALLOC;
-		} else {
-			ptr = __vmalloc(size, flags|__GFP_HIGHMEM, PAGE_KERNEL);
-		}
 	}
 
 	/* Resulting allocated memory will be page aligned */