Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 55280
b: refs/heads/master
c: 1f99a28
h: refs/heads/master
v: v3
  • Loading branch information
Christoph Lameter authored and Linus Torvalds committed May 9, 2007
1 parent 55b2304 commit 6f273be
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: abcd08a6f564171ffa05bc77d1c2ba4cfa949653
refs/heads/master: 1f99a283dc13b167b93b2e453a30782955f165c2
15 changes: 4 additions & 11 deletions trunk/mm/slub.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
Expand Down

0 comments on commit 6f273be

Please sign in to comment.