summaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/dcache.c
diff options
context:
space:
mode:
authorMark Fasheh <mark.fasheh@oracle.com>2007-10-18 12:36:10 -0700
committerMark Fasheh <mark.fasheh@oracle.com>2007-11-06 15:31:52 -0800
commit9f70968af3e6e21612e06e153aa71c62dee5a09b (patch)
treec4a11e07d94ad99fe13512b3b1a117de2613c300 /fs/ocfs2/dcache.c
parent019d1b2247c6898589560c6f3b3e7ec280b0010a (diff)
downloadlinux-stable-9f70968af3e6e21612e06e153aa71c62dee5a09b.tar.gz
linux-stable-9f70968af3e6e21612e06e153aa71c62dee5a09b.tar.bz2
linux-stable-9f70968af3e6e21612e06e153aa71c62dee5a09b.zip
ocfs2: Re-order iput in ocfs2_drop_dentry_lock
Do this to avoid a theoretical (I haven't seen this in practice) race where the downconvert thread might drop the dentry lock, allowing a remote unlink to proceed before dropping the inode locks. This could bounce access to the orphan dir between nodes. There doesn't seem to be a need to do the same in ocfs2_dentry_iput() as that's never called for the last ref drop from the downconvert thread. Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/dcache.c')
-rw-r--r--fs/ocfs2/dcache.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c
index 3094ddb7a254..1957a5ed219e 100644
--- a/fs/ocfs2/dcache.c
+++ b/fs/ocfs2/dcache.c
@@ -318,9 +318,9 @@ out_attach:
static void ocfs2_drop_dentry_lock(struct ocfs2_super *osb,
struct ocfs2_dentry_lock *dl)
{
+ iput(dl->dl_inode);
ocfs2_simple_drop_lockres(osb, &dl->dl_lockres);
ocfs2_lock_res_free(&dl->dl_lockres);
- iput(dl->dl_inode);
kfree(dl);
}