Re: [PATCH] cifs: Do not send echoes before Negotiate is complete

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux