| From c75b53af2f0043aff500af0a6f878497bef41bca Mon Sep 17 00:00:00 2001 |
| From: Minfei Huang <huangminfei@ucloud.cn> |
| Date: Wed, 4 Jun 2014 16:11:53 -0700 |
| Subject: lib/btree.c: fix leak of whole btree nodes |
| |
| From: Minfei Huang <huangminfei@ucloud.cn> |
| |
| commit c75b53af2f0043aff500af0a6f878497bef41bca upstream. |
| |
| I use btree from 3.14-rc2 in my own module. When the btree module is |
| removed, a warning arises: |
| |
| kmem_cache_destroy btree_node: Slab cache still has objects |
| CPU: 13 PID: 9150 Comm: rmmod Tainted: GF O 3.14.0-rc2 #1 |
| Hardware name: Inspur NF5270M3/NF5270M3, BIOS CHEETAH_2.1.3 09/10/2013 |
| Call Trace: |
| dump_stack+0x49/0x5d |
| kmem_cache_destroy+0xcf/0xe0 |
| btree_module_exit+0x10/0x12 [btree] |
| SyS_delete_module+0x198/0x1f0 |
| system_call_fastpath+0x16/0x1b |
| |
| The cause is that it doesn't release the last btree node, when height = 1 |
| and fill = 1. |
| |
| [akpm@linux-foundation.org: remove unneeded test of NULL] |
| Signed-off-by: Minfei Huang <huangminfei@ucloud.cn> |
| Cc: Joern Engel <joern@logfs.org> |
| Cc: Johannes Berg <johannes@sipsolutions.net> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| lib/btree.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/lib/btree.c |
| +++ b/lib/btree.c |
| @@ -198,6 +198,7 @@ EXPORT_SYMBOL_GPL(btree_init); |
| |
| void btree_destroy(struct btree_head *head) |
| { |
| + mempool_free(head->node, head->mempool); |
| mempool_destroy(head->mempool); |
| head->mempool = NULL; |
| } |