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