diff options
author | Tsutomu Itoh <t-itoh@jp.fujitsu.com> | 2012-12-17 01:38:51 -0500 |
---|---|---|
committer | Josef Bacik <josef@toxicpanda.com> | 2013-01-14 13:52:30 -0500 |
commit | cfa7a9ccda711ac6ab8f0d17c3a9b540092d305a (patch) | |
tree | 639a5436c4efe846035864a92832f67f520debe3 /fs | |
parent | 57ba86c00f9573b63b8c06810d4f6915efed2442 (diff) |
Btrfs: fix memory leak in name_cache_insert()
We should free name_cache_entry before returning from the
error handling code.
Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/send.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c index 54454542ad40..321b7fb4e441 100644 --- a/fs/btrfs/send.c +++ b/fs/btrfs/send.c | |||
@@ -1814,8 +1814,10 @@ static int name_cache_insert(struct send_ctx *sctx, | |||
1814 | (unsigned long)nce->ino); | 1814 | (unsigned long)nce->ino); |
1815 | if (!nce_head) { | 1815 | if (!nce_head) { |
1816 | nce_head = kmalloc(sizeof(*nce_head), GFP_NOFS); | 1816 | nce_head = kmalloc(sizeof(*nce_head), GFP_NOFS); |
1817 | if (!nce_head) | 1817 | if (!nce_head) { |
1818 | kfree(nce); | ||
1818 | return -ENOMEM; | 1819 | return -ENOMEM; |
1820 | } | ||
1819 | INIT_LIST_HEAD(nce_head); | 1821 | INIT_LIST_HEAD(nce_head); |
1820 | 1822 | ||
1821 | ret = radix_tree_insert(&sctx->name_cache, nce->ino, nce_head); | 1823 | ret = radix_tree_insert(&sctx->name_cache, nce->ino, nce_head); |