summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2012-08-18 11:05:53 -0700
committerBrian Behlendorf <[email protected]>2012-08-27 12:00:55 -0700
commit617f79de6aff55213bf233cf90d4425507acf56e (patch)
treea0134d498a00a1da479cdf67394520525397dd97
parentbc03e07a7c43b134c7936bba5e87fb8a526b6692 (diff)
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 <[email protected]>
-rw-r--r--module/spl/spl-kmem.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c
index 2d5f751b0..16eb4f884 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 */