summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Fasheh <mark.fasheh@oracle.com>2007-12-03 14:06:23 -0800
committerMark Fasheh <mark.fasheh@oracle.com>2007-12-17 10:49:43 -0800
commita86370fbb65a0a2cb21d28bf25a748f6cc04385b (patch)
tree787ec4c82c05a010c7ef38cb22b2a2ca73b2a6f3
parentea9e7b5569a538123dc4d60ba36b9170ca8e8830 (diff)
downloadlinux-3.10-a86370fbb65a0a2cb21d28bf25a748f6cc04385b.tar.gz
linux-3.10-a86370fbb65a0a2cb21d28bf25a748f6cc04385b.tar.bz2
linux-3.10-a86370fbb65a0a2cb21d28bf25a748f6cc04385b.zip
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>
-rw-r--r--fs/ocfs2/journal.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index f9d01e25298..7e5f7ce4761 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -1277,11 +1277,12 @@ static int ocfs2_queue_orphans(struct ocfs2_super *osb,
ocfs2_orphan_filldir);
if (status) {
mlog_errno(status);
- goto out;
+ goto out_cluster;
}
*head = priv.head;
+out_cluster:
ocfs2_meta_unlock(orphan_dir_inode, 0);
out:
mutex_unlock(&orphan_dir_inode->i_mutex);