Fix kmalloc slab creation sequence
This patch restores the slab creation sequence that was broken by commit4066c33d03and also reverts the portions that introduced the KMALLOC_LOOP_XXX macros. Those can never really work since the slab creation is much more complex than just going from a minimum to a maximum number. The latest upstream kernel boots cleanly on my machine with a 64 bit x86 configuration under KVM using either SLAB or SLUB. Fixes:4066c33d03("support the slub_debug boot option") Reported-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Christoph Lameter <cl@linux.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
88793e5c77
commit
a9730fca99
@@ -153,30 +153,8 @@ size_t ksize(const void *);
|
||||
#define ARCH_KMALLOC_MINALIGN ARCH_DMA_MINALIGN
|
||||
#define KMALLOC_MIN_SIZE ARCH_DMA_MINALIGN
|
||||
#define KMALLOC_SHIFT_LOW ilog2(ARCH_DMA_MINALIGN)
|
||||
/*
|
||||
* The KMALLOC_LOOP_LOW is the definition for the for loop index start number
|
||||
* to create the kmalloc_caches object in create_kmalloc_caches(). The first
|
||||
* and the second are 96 and 192. You can see that in the kmalloc_index(), if
|
||||
* the KMALLOC_MIN_SIZE <= 32, then return 1 (96). If KMALLOC_MIN_SIZE <= 64,
|
||||
* then return 2 (192). If the KMALLOC_MIN_SIZE is bigger than 64, we don't
|
||||
* need to initialize 96 and 192. Go directly to start the KMALLOC_SHIFT_LOW.
|
||||
*/
|
||||
#if KMALLOC_MIN_SIZE <= 32
|
||||
#define KMALLOC_LOOP_LOW 1
|
||||
#elif KMALLOC_MIN_SIZE <= 64
|
||||
#define KMALLOC_LOOP_LOW 2
|
||||
#else
|
||||
#define KMALLOC_LOOP_LOW KMALLOC_SHIFT_LOW
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define ARCH_KMALLOC_MINALIGN __alignof__(unsigned long long)
|
||||
/*
|
||||
* The KMALLOC_MIN_SIZE of slub/slab/slob is 2^3/2^5/2^3. So, even slab is used.
|
||||
* The KMALLOC_MIN_SIZE <= 32. The kmalloc-96 and kmalloc-192 should also be
|
||||
* initialized.
|
||||
*/
|
||||
#define KMALLOC_LOOP_LOW 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user