Commit c774e677 authored by Steve French's avatar Steve French
Browse files

cifs: fix lease break oops in xfstest generic/098



umount can race with lease break so need to check if
tcon->ses->server is still valid to send the lease
break response.

Reviewed-by: default avatarBharath SM <bharathsm@microsoft.com>
Reviewed-by: default avatarShyam Prasad N <sprasad@microsoft.com>
Fixes: 59a556ae ("SMB3: drop reference to cfile before sending oplock break")
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 5e90aa21
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -4942,9 +4942,13 @@ void cifs_oplock_break(struct work_struct *work)
	 * disconnected since oplock already released by the server
	 */
	if (!oplock_break_cancelled) {
		/* check for server null since can race with kill_sb calling tree disconnect */
		if (tcon->ses && tcon->ses->server) {
			rc = tcon->ses->server->ops->oplock_response(tcon, persistent_fid,
				volatile_fid, net_fid, cinode);
			cifs_dbg(FYI, "Oplock release rc = %d\n", rc);
		} else
			pr_warn_once("lease break not sent for unmounted share\n");
	}

	cifs_done_oplock_break(cinode);