diff options
author | Mark Fasheh <mark.fasheh@oracle.com> | 2007-12-03 17:06:23 -0500 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2007-12-17 13:49:43 -0500 |
commit | a86370fbb65a0a2cb21d28bf25a748f6cc04385b (patch) | |
tree | 787ec4c82c05a010c7ef38cb22b2a2ca73b2a6f3 /fs | |
parent | ea9e7b5569a538123dc4d60ba36b9170ca8e8830 (diff) |
ocfs2: fix exit-while-locked bug in ocfs2_queue_orphans()
We're holding the cluster lock when a failure might happen in
ocfs2_dir_foreach() so it needs to be released.
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ocfs2/journal.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index f9d01e25298d..7e5f7ce4761b 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c | |||
@@ -1277,11 +1277,12 @@ static int ocfs2_queue_orphans(struct ocfs2_super *osb, | |||
1277 | ocfs2_orphan_filldir); | 1277 | ocfs2_orphan_filldir); |
1278 | if (status) { | 1278 | if (status) { |
1279 | mlog_errno(status); | 1279 | mlog_errno(status); |
1280 | goto out; | 1280 | goto out_cluster; |
1281 | } | 1281 | } |
1282 | 1282 | ||
1283 | *head = priv.head; | 1283 | *head = priv.head; |
1284 | 1284 | ||
1285 | out_cluster: | ||
1285 | ocfs2_meta_unlock(orphan_dir_inode, 0); | 1286 | ocfs2_meta_unlock(orphan_dir_inode, 0); |
1286 | out: | 1287 | out: |
1287 | mutex_unlock(&orphan_dir_inode->i_mutex); | 1288 | mutex_unlock(&orphan_dir_inode->i_mutex); |