summaryrefslogtreecommitdiffstats
path: root/fs/cifs/misc.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-11-20 13:14:16 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2008-11-20 13:14:16 -0800
commit0cb39aa0ac3a9dc64171b43a85d17e539d82f2d6 (patch)
treec69f6840e55b868e23b3315eb0f09ad245ce67c4 /fs/cifs/misc.c
parentc93fc2873edcd3eae0ed11ba288a77f3ef62e92b (diff)
parentddb4cbfc53aa0913ee8da059fcbf628d14f40f63 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: [CIFS] Do not attempt to close invalidated file handles [CIFS] fix check for dead tcon in smb_init
Diffstat (limited to 'fs/cifs/misc.c')
-rw-r--r--fs/cifs/misc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index addd1dcc2d7..9ee3f689c2b 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -555,12 +555,14 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)
continue;
cifs_stats_inc(&tcon->num_oplock_brks);
+ write_lock(&GlobalSMBSeslock);
list_for_each(tmp2, &tcon->openFileList) {
netfile = list_entry(tmp2, struct cifsFileInfo,
tlist);
if (pSMB->Fid != netfile->netfid)
continue;
+ write_unlock(&GlobalSMBSeslock);
read_unlock(&cifs_tcp_ses_lock);
cFYI(1, ("file id match, oplock break"));
pCifsInode = CIFS_I(netfile->pInode);
@@ -576,6 +578,7 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)
return true;
}
+ write_unlock(&GlobalSMBSeslock);
read_unlock(&cifs_tcp_ses_lock);
cFYI(1, ("No matching file for oplock break"));
return true;