]> git.baikalelectronics.ru Git - kernel.git/commit
[PATCH] slab: fix memory leak in alloc_kmemlist
authorChristoph Lameter <clameter@sgi.com>
Sat, 25 Mar 2006 11:06:47 +0000 (03:06 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 25 Mar 2006 16:22:50 +0000 (08:22 -0800)
commit619942eaac07340b4b433b9c4f49c05006ac512e
tree0f7e8ed22ea26c79e17712c417593bdce04e7888
parent751e2941abed8c1bf2fd6dd6510a1112a72f9e72
[PATCH] slab: fix memory leak in alloc_kmemlist

We have had this memory leak for a while now.  The situation is complicated
by the use of alloc_kmemlist() as a function to resize various caches by
do_tune_cpucache().

What we do here is first of all make sure that we deallocate properly in
the loop over all the nodes.

If we are just resizing caches then we can simply return with -ENOMEM if an
allocation fails.

If the cache is new then we need to rollback and remove all earlier
allocations.

We detect that a cache is new by checking if the link to the global cache
chain has been setup.  This is a bit hackish ....

(also fix up too overlong lines that I added in the last patch...)

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Jesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
mm/slab.c