SLUB: clean up krealloc

We really do not need all this gaga there.

ksize gives us all the information we need to figure out if the object can
cope with the new size.

Signed-off-by: Christoph Lameter <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Christoph Lameter 2007-05-09 02:32:38 -07:00 • committed by Linus Torvalds
commit 1f99a283dc

View file

@ -2199,9 +2199,8 @@ EXPORT_SYMBOL(kmem_cache_shrink);
*/
void *krealloc(const void *p, size_t new_size, gfp_t flags)
{
struct kmem_cache *new_cache;
void *ret;
struct page *page;
size_t ks;
if (unlikely(!p))
return kmalloc(new_size, flags);
@ -2211,19 +2210,13 @@ void *krealloc(const void *p, size_t new_size, gfp_t flags)
return NULL;
}
page = virt_to_head_page(p);
new_cache = get_slab(new_size, flags);
/*
* If new size fits in the current cache, bail out.
*/
if (likely(page->slab == new_cache))
ks = ksize(p);
if (ks >= new_size)
return (void *)p;
ret = kmalloc(new_size, flags);
if (ret) {
memcpy(ret, p, min(new_size, ksize(p)));
memcpy(ret, p, min(new_size, ks));
kfree(p);
}
return ret;