diff options
author | Steve French <smfrench@austin.rr.com> | 2005-04-29 01:41:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-29 01:41:05 -0400 |
commit | cbe0476fa6a76b01b79e7c117963d45ed0a28758 (patch) | |
tree | e45a78777f977ba4670e7419bfdcde8a1429ceee /fs | |
parent | ad009ac96509e005d9978d0ae9e9ec4d63ad2990 (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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/cifs/CHANGES | 3 | ||||
-rw-r--r-- | fs/cifs/file.c | 2 |
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) | |||
6 | as new protocol extensions. Do not send Get/Set calls for POSIX ACLs | 6 | as new protocol extensions. Do not send Get/Set calls for POSIX ACLs |
7 | unless server explicitly claims to support them in CIFS Unix extensions | 7 | unless server explicitly claims to support them in CIFS Unix extensions |
8 | POSIX ACL capability bit. Fix packet signing when multiuser mounting with | 8 | POSIX ACL capability bit. Fix packet signing when multiuser mounting with |
9 | different users from the same client to the same server. | 9 | different users from the same client to the same server. Fix oops in |
10 | cifs_close. | ||
10 | 11 | ||
11 | Version 1.31 | 12 | Version 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); |