From: Brian Behlendorf Date: Sat, 18 Aug 2012 18:05:53 +0000 (-0700) Subject: Revert "Fix NULL deref in balance_pgdat()" X-Git-Tag: zfs-0.8.0-rc1~152^2~356 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=617f79de6aff55213bf233cf90d4425507acf56e;p=zfs 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 --- 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 */