1
0
Fork 0

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: Rabin Vincent <rabinv@axis.com>
Acked-by: Sachin Prabhu <sprabhu@redhat.com>
CC: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <smfrench@gmail.com>
hifive-unleashed-5.1
Rabin Vincent 2016-07-19 09:25:45 +02:00 committed by Steve French
parent 8d9535b6ef
commit b782fcc1cb
1 changed files with 3 additions and 1 deletions

View File

@ -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;