lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon,  5 Jan 2015 10:37:26 +0900
From:	Joonsoo Kim <>
To:	Andrew Morton <>
Cc:	Christoph Lameter <>,
	Pekka Enberg <>,
	David Rientjes <>,
	Joonsoo Kim <>,,,
	Jesper Dangaard Brouer <>
Subject: [PATCH 1/6] mm/slab: fix gfp flags of percpu allocation at boot phase

__alloc_percpu() passed GFP_KERNEL implicitly to core function of
percpu allocator. At boot phase, it's not valid gfp flag so change it.

Without this change, while implementing new feature, I found that
__alloc_percpu() calls kmalloc() which is not initialized at this time
and the system fail to boot. percpu allocator regards GFP_KERNEL as
the sign of the system fully initialized so aggressively try to make
spare room. With GFP_NOWAIT, it doesn't do that so succeed to boot.

Signed-off-by: Joonsoo Kim <>
 mm/slab.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/slab.c b/mm/slab.c
index 65b5dcb..1150c8b 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1990,9 +1990,12 @@ static struct array_cache __percpu *alloc_kmem_cache_cpus(
 	int cpu;
 	size_t size;
 	struct array_cache __percpu *cpu_cache;
+	gfp_t gfp_flags = GFP_KERNEL;
 	size = sizeof(void *) * entries + sizeof(struct array_cache);
-	cpu_cache = __alloc_percpu(size, sizeof(void *));
+	if (slab_state < FULL)
+		gfp_flags = GFP_NOWAIT;
+	cpu_cache = __alloc_percpu_gfp(size, sizeof(void *), gfp_flags);
 	if (!cpu_cache)
 		return NULL;

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

Powered by blists - more mailing lists