Already in cifs-2.6.git (updated to include cc:stable) On Mon, Apr 17, 2017 at 10:28 AM, Pavel Shilovsky <piastryyy@xxxxxxxxx> wrote: > 2017-04-16 21:27 GMT-07:00 Steve French <smfrench@xxxxxxxxx>: >> I fixed the checkpatch error (missing tab in Sachin's patch) and merged into >> cifs-2.6.git >> >> thx >> >> On Sun, Apr 16, 2017 at 5:59 PM, Jonathan Liu <net147@xxxxxxxxx> wrote: >>> >>> Hi Sachin, >>> >>> On 17 April 2017 at 05:37, Sachin Prabhu <sprabhu@xxxxxxxxxx> wrote: >>> > commit 4fcd1813e640 ("Fix reconnect to not defer smb3 session reconnect >>> > long after socket reconnect") added support for Negotiate requests to >>> > be initiated by echo calls. >>> > >>> > To avoid delays in calling echo after a reconnect, I added the patch >>> > introduced by the commit b8c600120fc8 ("Call echo service immediately >>> > after socket reconnect"). >>> > >>> > This has however caused a regression with cifs shares which do not have >>> > support for echo calls to trigger Negotiate requests. On connections >>> > which need to call Negotiation, the echo calls trigger an error which >>> > triggers a reconnect which in turn triggers another echo call. This >>> > results in a loop which is only broken when an operation is performed on >>> > the cifs share. For an idle share, it can DOS a server. >>> > >>> > The patch uses the smb_operation can_echo() for cifs so that it is >>> > called only if connection has been already been setup. >>> > >>> > kernel bz: 194531 >>> > >>> > Signed-off-by: Sachin Prabhu <sprabhu@xxxxxxxxxx> >>> > --- >>> > fs/cifs/smb1ops.c | 10 ++++++++++ >>> > 1 file changed, 10 insertions(+) >>> > >>> > diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c >>> > index cc93ba4..60a1979 100644 >>> > --- a/fs/cifs/smb1ops.c >>> > +++ b/fs/cifs/smb1ops.c >>> > @@ -1015,6 +1015,15 @@ cifs_dir_needs_close(struct cifsFileInfo *cfile) >>> > return !cfile->srch_inf.endOfSearch && !cfile->invalidHandle; >>> > } >>> > >>> > +static bool >>> > +cifs_can_echo(struct TCP_Server_Info *server) >>> > +{ >>> > + if (server->tcpStatus == CifsGood) >>> > + return true; >>> > + >>> > + return false; >>> > +} >>> > + >>> > struct smb_version_operations smb1_operations = { >>> > .send_cancel = send_nt_cancel, >>> > .compare_fids = cifs_compare_fids, >>> > @@ -1049,6 +1058,7 @@ struct smb_version_operations smb1_operations = { >>> > .get_dfs_refer = CIFSGetDFSRefer, >>> > .qfs_tcon = cifs_qfs_tcon, >>> > .is_path_accessible = cifs_is_path_accessible, >>> > + .can_echo = cifs_can_echo, >>> > .query_path_info = cifs_query_path_info, >>> > .query_file_info = cifs_query_file_info, >>> > .get_srv_inum = cifs_get_srv_inum, >>> > -- >>> > 2.9.3 >>> > >>> >>> This fixes the issue for me. >>> >>> Tested-by: Jonathan Liu <net147@xxxxxxxxx> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> >> >> >> -- >> Thanks, >> >> Steve > > > I think this patch should go to stable as well. > > -- > Best regards, > Pavel Shilovsky -- Thanks, Steve -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html