Selaa lähdekoodia

[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>
Steve French 20 vuotta sitten
vanhempi
commit
cbe0476fa6
2 muutettua tiedostoa jossa 4 lisäystä ja 1 poistoa
  1. 2 1
      fs/cifs/CHANGES
  2. 2 0
      fs/cifs/file.c

+ 2 - 1
fs/cifs/CHANGES

@@ -6,7 +6,8 @@ Add support for lsattr (getting ext2/ext3/reiserfs attr flags from the server)
 as new protocol extensions. Do not send Get/Set calls for POSIX ACLs
 as new protocol extensions. Do not send Get/Set calls for POSIX ACLs
 unless server explicitly claims to support them in CIFS Unix extensions
 unless server explicitly claims to support them in CIFS Unix extensions
 POSIX ACL capability bit. Fix packet signing when multiuser mounting with
 POSIX ACL capability bit. Fix packet signing when multiuser mounting with
-different users from the same client to the same server.
+different users from the same client to the same server. Fix oops in
+cifs_close.
 
 
 Version 1.31
 Version 1.31
 ------------
 ------------

+ 2 - 0
fs/cifs/file.c

@@ -465,8 +465,10 @@ int cifs_close(struct inode *inode, struct file *file)
 				write_lock(&file->f_owner.lock);
 				write_lock(&file->f_owner.lock);
 			}
 			}
 		}
 		}
+		write_lock(&GlobalSMBSeslock);
 		list_del(&pSMBFile->flist);
 		list_del(&pSMBFile->flist);
 		list_del(&pSMBFile->tlist);
 		list_del(&pSMBFile->tlist);
+		write_unlock(&GlobalSMBSeslock);
 		write_unlock(&file->f_owner.lock);
 		write_unlock(&file->f_owner.lock);
 		kfree(pSMBFile->search_resume_name);
 		kfree(pSMBFile->search_resume_name);
 		kfree(file->private_data);
 		kfree(file->private_data);