Whamcloud - gitweb
LU-6305 osd-ldiskfs: buffer head leak in osd 09/13909/6
authorAndriy Skulysh <andriy.skulysh@seagate.com>
Wed, 15 Jul 2015 08:15:37 +0000 (11:15 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 18 Aug 2015 11:19:04 +0000 (11:19 +0000)
iam_new_leaf() should release new_leaf
in case of an error

Change-Id: I48d358cb823d83b5412a1e4b88ab3ea13a0bee35
Xyratex-bug-id: MRP-2338
Signed-off-by: Andriy Skulysh <andriy.skulysh@seagate.com>
Reviewed-by: Alexey Lyashkov <alexey.lyashkov@seagate.com>
Reviewed-by: Andrew Perepechko <andrew.perepechko@seagate.com>
Reviewed-on: http://review.whamcloud.com/13909
Tested-by: Jenkins
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osd-ldiskfs/osd_iam.c

index 0251e5b..8d10fe9 100644 (file)
@@ -1803,12 +1803,12 @@ static int iam_new_leaf(handle_t *handle, struct iam_leaf *leaf)
                                iam_unlock_htree(path->ip_container, lh);
                         do_corr(schedule());
                         err = iam_txn_dirty(handle, path, new_leaf);
-                        brelse(new_leaf);
                         if (err == 0)
                                 err = ldiskfs_mark_inode_dirty(handle, obj);
                         do_corr(schedule());
                 } else
                         err = -ENOMEM;
+               brelse(new_leaf);
         }
         assert_inv(iam_leaf_check(leaf));
         assert_inv(iam_leaf_check(&iam_leaf_path(leaf)->ip_leaf));