Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a974680 authored by Petr Tesarik's avatar Petr Tesarik Committed by Steve French
Browse files

[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: default avatarPetr Tesarik <ptesarik@suse.cz>
Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent f7a44ead
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -438,9 +438,9 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server)
			csocket = server->ssocket;
			wake_up(&server->response_q);
			continue;
		} else if (length < 4) {
			cFYI(1, ("less than four bytes received (%d bytes)",
			      length));
		} else if (length < pdu_length) {
			cFYI(1, ("requested %d bytes but only got %d bytes",
				  pdu_length, length));
			pdu_length -= length;
			msleep(1);
			goto incomplete_rcv;