Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 058daf4f authored by Jeff Layton's avatar Jeff Layton Committed by Steve French
Browse files

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: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 495e9937
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -562,14 +562,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);
			read_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(&GlobalSMBSeslock);
				read_unlock(&cifs_tcp_ses_lock);
				cFYI(1, ("file id match, oplock break"));
				pCifsInode = CIFS_I(netfile->pInode);
@@ -584,7 +584,7 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)

				return true;
			}
			write_unlock(&GlobalSMBSeslock);
			read_unlock(&GlobalSMBSeslock);
			read_unlock(&cifs_tcp_ses_lock);
			cFYI(1, ("No matching file for oplock break"));
			return true;