SLUB: allocate smallest object size if the user asks for 0 bytes
Makes SLUB behave like SLAB in this area to avoid issues.... Throw a stack dump to alert people. At some point the behavior should be switched back. NULL is no memory as far as I can tell and if the use asked for 0 bytes then he need to get no memory. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
47bfdc0d5a
commit
614410d589
2 changed files with 7 additions and 3 deletions
|
@ -80,8 +80,12 @@ extern struct kmem_cache kmalloc_caches[KMALLOC_SHIFT_HIGH + 1];
|
|||
*/
|
||||
static inline int kmalloc_index(int size)
|
||||
{
|
||||
if (size == 0)
|
||||
return 0;
|
||||
/*
|
||||
* We should return 0 if size == 0 but we use the smallest object
|
||||
* here for SLAB legacy reasons.
|
||||
*/
|
||||
WARN_ON_ONCE(size == 0);
|
||||
|
||||
if (size > 64 && size <= 96)
|
||||
return 1;
|
||||
if (size > 128 && size <= 192)
|
||||
|
|
|
@ -1979,7 +1979,7 @@ static struct kmem_cache *get_slab(size_t size, gfp_t flags)
|
|||
{
|
||||
int index = kmalloc_index(size);
|
||||
|
||||
if (!size)
|
||||
if (!index)
|
||||
return NULL;
|
||||
|
||||
/* Allocation too large? */
|
||||
|
|
Loading…
Reference in a new issue