wait_for_response(ses, midQ, timeout, 10 * HZ);
 
        spin_lock(&GlobalMid_Lock);
-       if (midQ->resp_buf) {
-               spin_unlock(&GlobalMid_Lock);
-               receive_len = midQ->resp_buf->smb_buf_length;
-       } else {
+
+       if (midQ->resp_buf == NULL) {
                cERROR(1, ("No response to cmd %d mid %d",
                        midQ->command, midQ->mid));
                if (midQ->midState == MID_REQUEST_SUBMITTED) {
                return rc;
        }
 
+       spin_unlock(&GlobalMid_Lock);
+       receive_len = midQ->resp_buf->smb_buf_length;
+
        if (receive_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) {
                cERROR(1, ("Frame too large received.  Length: %d  Xid: %d",
                        receive_len, xid));
        wait_for_response(ses, midQ, timeout, 10 * HZ);
 
        spin_lock(&GlobalMid_Lock);
-       if (midQ->resp_buf) {
-               spin_unlock(&GlobalMid_Lock);
-               receive_len = midQ->resp_buf->smb_buf_length;
-       } else {
+       if (midQ->resp_buf == NULL) {
                cERROR(1, ("No response for cmd %d mid %d",
                          midQ->command, midQ->mid));
                if (midQ->midState == MID_REQUEST_SUBMITTED) {
                return rc;
        }
 
+       spin_unlock(&GlobalMid_Lock);
+       receive_len = midQ->resp_buf->smb_buf_length;
+
        if (receive_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) {
                cERROR(1, ("Frame too large received.  Length: %d  Xid: %d",
                        receive_len, xid));