[CIFS] Fix spurious reconnect on 2nd peek from read of SMB length
When retrying kernel_recvmsg() because of a short read, check returned length against the remaining length, not against total length. This avoids unneeded session reconnects which would otherwise occur when kernel_recvmsg() finally returns zero when asked to read zero bytes. Signed-off-by: Petr Tesarik <ptesarik@suse.cz> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
f7a44eadd5
commit
2a97468024
|
@ -438,9 +438,9 @@ incomplete_rcv:
|
||||||
csocket = server->ssocket;
|
csocket = server->ssocket;
|
||||||
wake_up(&server->response_q);
|
wake_up(&server->response_q);
|
||||||
continue;
|
continue;
|
||||||
} else if (length < 4) {
|
} else if (length < pdu_length) {
|
||||||
cFYI(1, ("less than four bytes received (%d bytes)",
|
cFYI(1, ("requested %d bytes but only got %d bytes",
|
||||||
length));
|
pdu_length, length));
|
||||||
pdu_length -= length;
|
pdu_length -= length;
|
||||||
msleep(1);
|
msleep(1);
|
||||||
goto incomplete_rcv;
|
goto incomplete_rcv;
|
||||||
|
|
Reference in New Issue