Commit 9e7ffa77 authored by Steve French's avatar Steve French
Browse files

cifs: release lock earlier in dequeue_mid error case



In dequeue_mid we can log an error while holding a spinlock,
GlobalMid_Lock.  Coverity notes that the error logging
also grabs a lock so it is cleaner (and a bit safer) to
release the GlobalMid_Lock before logging the warning.

Addresses-Coverity: 1507573 ("Thread deadlock")
Reviewed-by: default avatarPaulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent bac35395
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -709,14 +709,15 @@ dequeue_mid(struct mid_q_entry *mid, bool malformed)
	 * Trying to handle/dequeue a mid after the send_recv()
	 * function has finished processing it is a bug.
	 */
	if (mid->mid_flags & MID_DELETED)
	if (mid->mid_flags & MID_DELETED) {
		spin_unlock(&GlobalMid_Lock);
		pr_warn_once("trying to dequeue a deleted mid\n");
	else {
	} else {
		list_del_init(&mid->qhead);
		mid->mid_flags |= MID_DELETED;
	}
		spin_unlock(&GlobalMid_Lock);
	}
}

static unsigned int
smb2_get_credits_from_hdr(char *buffer, struct TCP_Server_Info *server)