lkml.org 
[lkml]   [2022]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 032/146] net/smc: Fix sock leak when release after smc_shutdown()
    Date
    From: Tony Lu <tonylu@linux.alibaba.com>

    [ Upstream commit 1a74e99323746353bba11562a2f2d0aa8102f402 ]

    Since commit e5d5aadcf3cd ("net/smc: fix sk_refcnt underflow on linkdown
    and fallback"), for a fallback connection, __smc_release() does not call
    sock_put() if its state is already SMC_CLOSED.

    When calling smc_shutdown() after falling back, its state is set to
    SMC_CLOSED but does not call sock_put(), so this patch calls it.

    Reported-and-tested-by: syzbot+6e29a053eb165bd50de5@syzkaller.appspotmail.com
    Fixes: e5d5aadcf3cd ("net/smc: fix sk_refcnt underflow on linkdown and fallback")
    Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
    Acked-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/smc/af_smc.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
    index 303c5e56e4df..68cd110722a4 100644
    --- a/net/smc/af_smc.c
    +++ b/net/smc/af_smc.c
    @@ -2538,8 +2538,10 @@ static int smc_shutdown(struct socket *sock, int how)
    if (smc->use_fallback) {
    rc = kernel_sock_shutdown(smc->clcsock, how);
    sk->sk_shutdown = smc->clcsock->sk->sk_shutdown;
    - if (sk->sk_shutdown == SHUTDOWN_MASK)
    + if (sk->sk_shutdown == SHUTDOWN_MASK) {
    sk->sk_state = SMC_CLOSED;
    + sock_put(sk);
    + }
    goto out;
    }
    switch (how) {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-04-26 11:26    [W:4.055 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site