Re: [PATCH v2] cifs: Fix connections leak when tlink setup failed

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

 



tentatively merged into cifs-2.6.git for-next pending testing

On Fri, Nov 11, 2022 at 12:07 AM Zhang Xiaoxu <zhangxiaoxu5@xxxxxxxxxx> wrote:
>
> If the tlink setup failed, lost to put the connections, then
> the module refcnt leak since the cifsd kthread not exit.
>
> Also leak the fscache info, and for next mount with fsc, it will
> print the follow errors:
>   CIFS: Cache volume key already in use (cifs,127.0.0.1:445,TEST)
>
> Let's check the result of tlink setup, and do some cleanup.
>
> Fixes: 56c762eb9bee ("cifs: Refactor out cifs_mount()")
> Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@xxxxxxxxxx>
> ---
> v2: goto error rather than only put connections.
>
>  fs/cifs/connect.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
> index 1cc47dd3b4d6..9db9527c61cf 100644
> --- a/fs/cifs/connect.c
> +++ b/fs/cifs/connect.c
> @@ -3855,9 +3855,13 @@ int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx)
>         uuid_copy(&cifs_sb->dfs_mount_id, &mnt_ctx.mount_id);
>
>  out:
> -       free_xid(mnt_ctx.xid);
>         cifs_try_adding_channels(cifs_sb, mnt_ctx.ses);
> -       return mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
> +       rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
> +       if (rc)
> +               goto error;
> +
> +       free_xid(mnt_ctx.xid);
> +       return rc;
>
>  error:
>         dfs_cache_put_refsrv_sessions(&mnt_ctx.mount_id);
> @@ -3884,8 +3888,12 @@ int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx)
>                         goto error;
>         }
>
> +       rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
> +       if (rc)
> +               goto error;
> +
>         free_xid(mnt_ctx.xid);
> -       return mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
> +       return rc;
>
>  error:
>         mount_put_conns(&mnt_ctx);
> --
> 2.31.1
>


-- 
Thanks,

Steve



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

  Powered by Linux