aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <smfrench@austin.rr.com>2005-04-29 01:41:05 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-29 01:41:05 -0400
commitcbe0476fa6a76b01b79e7c117963d45ed0a28758 (patch)
treee45a78777f977ba4670e7419bfdcde8a1429ceee
parentad009ac96509e005d9978d0ae9e9ec4d63ad2990 (diff)
[PATCH] cifs: fix rare oops in cifs_close
Protect access to cifs file list in cifs_close path Signed-off-by: Steve French (sfrench@us.ibm.com) Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/cifs/CHANGES3
-rw-r--r--fs/cifs/file.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 43b3119a16ed..ce16b0ae772e 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -6,7 +6,8 @@ Add support for lsattr (getting ext2/ext3/reiserfs attr flags from the server)
6as new protocol extensions. Do not send Get/Set calls for POSIX ACLs 6as new protocol extensions. Do not send Get/Set calls for POSIX ACLs
7unless server explicitly claims to support them in CIFS Unix extensions 7unless server explicitly claims to support them in CIFS Unix extensions
8POSIX ACL capability bit. Fix packet signing when multiuser mounting with 8POSIX ACL capability bit. Fix packet signing when multiuser mounting with
9different users from the same client to the same server. 9different users from the same client to the same server. Fix oops in
10cifs_close.
10 11
11Version 1.31 12Version 1.31
12------------ 13------------
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index dcab7cf1b53b..9c7755053099 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -465,8 +465,10 @@ int cifs_close(struct inode *inode, struct file *file)
465 write_lock(&file->f_owner.lock); 465 write_lock(&file->f_owner.lock);
466 } 466 }
467 } 467 }
468 write_lock(&GlobalSMBSeslock);
468 list_del(&pSMBFile->flist); 469 list_del(&pSMBFile->flist);
469 list_del(&pSMBFile->tlist); 470 list_del(&pSMBFile->tlist);
471 write_unlock(&GlobalSMBSeslock);
470 write_unlock(&file->f_owner.lock); 472 write_unlock(&file->f_owner.lock);
471 kfree(pSMBFile->search_resume_name); 473 kfree(pSMBFile->search_resume_name);
472 kfree(file->private_data); 474 kfree(file->private_data);