Skip to content

Commit

Permalink
slob: fix page order calculation on not 4KB page
Browse files Browse the repository at this point in the history
SLOB doesn't calculate correct page order when page size is not 4KB.  This
patch fixes it with using get_order() instead of find_order() which is SLOB
version of get_order().

Signed-off-by: Akinobu Mita <[email protected]>
Acked-by: Matt Mackall <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
mita authored and Linus Torvalds committed May 7, 2007
1 parent 5bc9859 commit 4ab688c
Showing 1 changed file with 3 additions and 12 deletions.
15 changes: 3 additions & 12 deletions mm/slob.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,15 +150,6 @@ static void slob_free(void *block, int size)
spin_unlock_irqrestore(&slob_lock, flags);
}

static int FASTCALL(find_order(int size));
static int fastcall find_order(int size)
{
int order = 0;
for ( ; size > 4096 ; size >>=1)
order++;
return order;
}

void *__kmalloc(size_t size, gfp_t gfp)
{
slob_t *m;
Expand All @@ -174,7 +165,7 @@ void *__kmalloc(size_t size, gfp_t gfp)
if (!bb)
return 0;

bb->order = find_order(size);
bb->order = get_order(size);
bb->pages = (void *)__get_free_pages(gfp, bb->order);

if (bb->pages) {
Expand Down Expand Up @@ -318,7 +309,7 @@ void *kmem_cache_alloc(struct kmem_cache *c, gfp_t flags)
if (c->size < PAGE_SIZE)
b = slob_alloc(c->size, flags, c->align);
else
b = (void *)__get_free_pages(flags, find_order(c->size));
b = (void *)__get_free_pages(flags, get_order(c->size));

if (c->ctor)
c->ctor(b, c, SLAB_CTOR_CONSTRUCTOR);
Expand All @@ -345,7 +336,7 @@ void kmem_cache_free(struct kmem_cache *c, void *b)
if (c->size < PAGE_SIZE)
slob_free(b, c->size);
else
free_pages((unsigned long)b, find_order(c->size));
free_pages((unsigned long)b, get_order(c->size));
}
EXPORT_SYMBOL(kmem_cache_free);

Expand Down

0 comments on commit 4ab688c

Please sign in to comment.