Re: [PATCH] cifs: fix channel signing

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

 



чт, 6 февр. 2020 г. в 05:00, Aurelien Aptel <aaptel@xxxxxxxx>:
>
> The server var was accidentally used as an iterator over the global
> list of connections, thus overwritten the passed argument. This
> resulted in the wrong signing key being returned for extra channels.
>
> Fix this by using a separate var to iterate.
>
> Signed-off-by: Aurelien Aptel <aaptel@xxxxxxxx>
> ---
>  fs/cifs/smb2transport.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/cifs/smb2transport.c b/fs/cifs/smb2transport.c
> index fe6acfce3390..08b703b7a15e 100644
> --- a/fs/cifs/smb2transport.c
> +++ b/fs/cifs/smb2transport.c
> @@ -104,13 +104,14 @@ int smb2_get_sign_key(__u64 ses_id, struct TCP_Server_Info *server, u8 *key)
>  {
>         struct cifs_chan *chan;
>         struct cifs_ses *ses = NULL;
> +       struct TCP_Server_Info *it = NULL;
>         int i;
>         int rc = 0;
>
>         spin_lock(&cifs_tcp_ses_lock);
>
> -       list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
> -               list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
> +       list_for_each_entry(it, &cifs_tcp_ses_list, tcp_ses_list) {
> +               list_for_each_entry(ses, &it->smb_ses_list, smb_ses_list) {
>                         if (ses->Suid == ses_id)
>                                 goto found;
>                 }

Good catch!

Reviewed-by: Pavel Shilovsky <pshilov@xxxxxxxxxxxxx>

Stable candidate?

--
Best regards,
Pavel Shilovsky




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

  Powered by Linux