Re: [patch-kj] net/ipv4/fib_hash.c: check kmem_cache_create()
From: maximilian attems <hidden>
Date: 2004-06-21 20:04:20
On Tue, 22 Jun 2004, YOSHIFUJI Hideaki / ?$B5HF#1QL@ wrote:
quoted hunk ↗ jump to hunk
In article [ref] (at Mon, 21 Jun 2004 19:18:32 +0200), maximilian attems [off-list ref] says:quoted
From: Francois Romieu <romieu@fr.zoreil.com> kmem_cache_create leak. Note: fib_hash_init() can be called many times. Signed-off-by: Maximilian Attems <redacted>Please tell us what kind of leakage do you see? Is it just enough to return NULL if kmem_cache_create() fails like this?--- a/net/ipv4/fib_hash.c 10 Nov 2003 23:40:57 -0000 1.1.1.13 +++ b/net/ipv4/fib_hash.c 21 Jun 2004 18:19:16 -0000@@ -871,12 +871,14 @@ { struct fib_table *tb; - if (fn_hash_kmem == NULL) + if (fn_hash_kmem == NULL) { fn_hash_kmem = kmem_cache_create("ip_fib_hash", sizeof(struct fib_node), 0, SLAB_HWCACHE_ALIGN, NULL, NULL); - + if (fn_hash_kmem == NULL) + return NULL; + } tb = kmalloc(sizeof(struct fib_table) + sizeof(struct fn_hash), GFP_KERNEL); if (tb == NULL) return NULL;
doesn't seem to be enough, because if (tb == NULL) fn_hash_kmem won't be freed, or am i overseeing something? a++ maks