Преглед на файлове

cifs: take read lock on GlobalSMBSes_lock in is_valid_oplock_break

...rather than a write lock. It doesn't change the list so a read lock
should be sufficient.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Jeff Layton преди 16 години
родител
ревизия
058daf4f67
променени са 1 файла, в които са добавени 3 реда и са изтрити 3 реда
  1. 3 3
      fs/cifs/misc.c

+ 3 - 3
fs/cifs/misc.c

@@ -562,14 +562,14 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)
 				continue;
 				continue;
 
 
 			cifs_stats_inc(&tcon->num_oplock_brks);
 			cifs_stats_inc(&tcon->num_oplock_brks);
-			write_lock(&GlobalSMBSeslock);
+			read_lock(&GlobalSMBSeslock);
 			list_for_each(tmp2, &tcon->openFileList) {
 			list_for_each(tmp2, &tcon->openFileList) {
 				netfile = list_entry(tmp2, struct cifsFileInfo,
 				netfile = list_entry(tmp2, struct cifsFileInfo,
 						     tlist);
 						     tlist);
 				if (pSMB->Fid != netfile->netfid)
 				if (pSMB->Fid != netfile->netfid)
 					continue;
 					continue;
 
 
-				write_unlock(&GlobalSMBSeslock);
+				read_unlock(&GlobalSMBSeslock);
 				read_unlock(&cifs_tcp_ses_lock);
 				read_unlock(&cifs_tcp_ses_lock);
 				cFYI(1, ("file id match, oplock break"));
 				cFYI(1, ("file id match, oplock break"));
 				pCifsInode = CIFS_I(netfile->pInode);
 				pCifsInode = CIFS_I(netfile->pInode);
@@ -584,7 +584,7 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)
 
 
 				return true;
 				return true;
 			}
 			}
-			write_unlock(&GlobalSMBSeslock);
+			read_unlock(&GlobalSMBSeslock);
 			read_unlock(&cifs_tcp_ses_lock);
 			read_unlock(&cifs_tcp_ses_lock);
 			cFYI(1, ("No matching file for oplock break"));
 			cFYI(1, ("No matching file for oplock break"));
 			return true;
 			return true;