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

Commit b782fcc1 authored by Rabin Vincent's avatar Rabin Vincent Committed by Steve French
Browse files

cifs: unbreak TCP session reuse



adfeb3e0 ("cifs: Make echo interval tunable") added a comparison of
vol->echo_interval to server->echo_interval as a criterium to
match_server(), but:

 (1) A default value is set for server->echo_interval but not for
 vol->echo_interval, meaning these can never match if the echo_interval
 option is not specified.

 (2) vol->echo_interval is in seconds but server->echo_interval is in
 jiffies, meaning these can never match even if the echo_interval option
 is specified.

This broke TCP session reuse since match_server() can never return 1.
Fix it.

Fixes: adfeb3e0 ("cifs: Make echo interval tunable")
Signed-off-by: default avatarRabin Vincent <rabinv@axis.com>
Acked-by: default avatarSachin Prabhu <sprabhu@redhat.com>
CC: Stable <stable@vger.kernel.org>
Signed-off-by: default avatarSteve French <smfrench@gmail.com>
parent 8d9535b6
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1228,6 +1228,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
	vol->ops = &smb1_operations;
	vol->vals = &smb1_values;

	vol->echo_interval = SMB_ECHO_INTERVAL_DEFAULT;

	if (!mountdata)
		goto cifs_parse_mount_err;

@@ -2049,7 +2051,7 @@ static int match_server(struct TCP_Server_Info *server, struct smb_vol *vol)
	if (!match_security(server, vol))
		return 0;

	if (server->echo_interval != vol->echo_interval)
	if (server->echo_interval != vol->echo_interval * HZ)
		return 0;

	return 1;