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

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
...@@ -1228,6 +1228,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, ...@@ -1228,6 +1228,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
vol->ops = &smb1_operations; vol->ops = &smb1_operations;
vol->vals = &smb1_values; vol->vals = &smb1_values;
vol->echo_interval = SMB_ECHO_INTERVAL_DEFAULT;
if (!mountdata) if (!mountdata)
goto cifs_parse_mount_err; goto cifs_parse_mount_err;
...@@ -2049,7 +2051,7 @@ static int match_server(struct TCP_Server_Info *server, struct smb_vol *vol) ...@@ -2049,7 +2051,7 @@ static int match_server(struct TCP_Server_Info *server, struct smb_vol *vol)
if (!match_security(server, vol)) if (!match_security(server, vol))
return 0; return 0;
if (server->echo_interval != vol->echo_interval) if (server->echo_interval != vol->echo_interval * HZ)
return 0; return 0;
return 1; return 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment