summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunil Mushran <sunil.mushran@oracle.com>2007-09-21 20:41:43 +0200
committerMark Fasheh <mark.fasheh@oracle.com>2007-10-03 20:14:45 +0200
commitbda0233b89c10ae46ccecb78bffdaf0fd7833d17 (patch)
treeb7ffce2948a7ecd1912f58b3de553f76fe61f74f
parentMerge branch 'sas-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarz... (diff)
downloadlinux-bda0233b89c10ae46ccecb78bffdaf0fd7833d17.tar.xz
linux-bda0233b89c10ae46ccecb78bffdaf0fd7833d17.zip
ocfs2: Unlock mutex in local alloc failure case
The fs was not unlocking the local alloc inode mutex in the code path in which it failed to find a window of free bits in the global bitmap. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
-rw-r--r--fs/ocfs2/localalloc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c
index de984d272576..d272847d5a07 100644
--- a/fs/ocfs2/localalloc.c
+++ b/fs/ocfs2/localalloc.c
@@ -514,8 +514,10 @@ int ocfs2_reserve_local_alloc_bits(struct ocfs2_super *osb,
ac->ac_bh = osb->local_alloc_bh;
status = 0;
bail:
- if (status < 0 && local_alloc_inode)
+ if (status < 0 && local_alloc_inode) {
+ mutex_unlock(&local_alloc_inode->i_mutex);
iput(local_alloc_inode);
+ }
mlog_exit(status);
return status;