aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/transport.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/transport.c')
-rw-r--r--fs/cifs/transport.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index dc2d1b0bba58..01b3aa5f928b 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -583,10 +583,8 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses,
583 wait_for_response(ses, midQ, timeout, 10 * HZ); 583 wait_for_response(ses, midQ, timeout, 10 * HZ);
584 584
585 spin_lock(&GlobalMid_Lock); 585 spin_lock(&GlobalMid_Lock);
586 if (midQ->resp_buf) { 586
587 spin_unlock(&GlobalMid_Lock); 587 if (midQ->resp_buf == NULL) {
588 receive_len = midQ->resp_buf->smb_buf_length;
589 } else {
590 cERROR(1, ("No response to cmd %d mid %d", 588 cERROR(1, ("No response to cmd %d mid %d",
591 midQ->command, midQ->mid)); 589 midQ->command, midQ->mid));
592 if (midQ->midState == MID_REQUEST_SUBMITTED) { 590 if (midQ->midState == MID_REQUEST_SUBMITTED) {
@@ -614,6 +612,9 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses,
614 return rc; 612 return rc;
615 } 613 }
616 614
615 spin_unlock(&GlobalMid_Lock);
616 receive_len = midQ->resp_buf->smb_buf_length;
617
617 if (receive_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) { 618 if (receive_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) {
618 cERROR(1, ("Frame too large received. Length: %d Xid: %d", 619 cERROR(1, ("Frame too large received. Length: %d Xid: %d",
619 receive_len, xid)); 620 receive_len, xid));
@@ -773,10 +774,7 @@ SendReceive(const unsigned int xid, struct cifsSesInfo *ses,
773 wait_for_response(ses, midQ, timeout, 10 * HZ); 774 wait_for_response(ses, midQ, timeout, 10 * HZ);
774 775
775 spin_lock(&GlobalMid_Lock); 776 spin_lock(&GlobalMid_Lock);
776 if (midQ->resp_buf) { 777 if (midQ->resp_buf == NULL) {
777 spin_unlock(&GlobalMid_Lock);
778 receive_len = midQ->resp_buf->smb_buf_length;
779 } else {
780 cERROR(1, ("No response for cmd %d mid %d", 778 cERROR(1, ("No response for cmd %d mid %d",
781 midQ->command, midQ->mid)); 779 midQ->command, midQ->mid));
782 if (midQ->midState == MID_REQUEST_SUBMITTED) { 780 if (midQ->midState == MID_REQUEST_SUBMITTED) {
@@ -804,6 +802,9 @@ SendReceive(const unsigned int xid, struct cifsSesInfo *ses,
804 return rc; 802 return rc;
805 } 803 }
806 804
805 spin_unlock(&GlobalMid_Lock);
806 receive_len = midQ->resp_buf->smb_buf_length;
807
807 if (receive_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) { 808 if (receive_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) {
808 cERROR(1, ("Frame too large received. Length: %d Xid: %d", 809 cERROR(1, ("Frame too large received. Length: %d Xid: %d",
809 receive_len, xid)); 810 receive_len, xid));