lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 515/800] skmsg: Fix a memory leak in sk_psock_verdict_apply()
    Date
    From: Cong Wang <cong.wang@bytedance.com>

    [ Upstream commit 0cf6672b23c8aa9d9274798dd63cbf6ede77ef90 ]

    If the dest psock does not set SK_PSOCK_TX_ENABLED,
    the skb can't be queued anywhere so must be dropped.

    This one is found during code review.

    Fixes: 799aa7f98d53 ("skmsg: Avoid lock_sock() in sk_psock_backlog()")
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
    Link: https://lore.kernel.org/bpf/20210615021342.7416-6-xiyou.wangcong@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/core/skmsg.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/net/core/skmsg.c b/net/core/skmsg.c
    index df545748cd6a..dd22ca838754 100644
    --- a/net/core/skmsg.c
    +++ b/net/core/skmsg.c
    @@ -947,8 +947,13 @@ static void sk_psock_verdict_apply(struct sk_psock *psock,
    if (sk_psock_test_state(psock, SK_PSOCK_TX_ENABLED)) {
    skb_queue_tail(&psock->ingress_skb, skb);
    schedule_work(&psock->work);
    + err = 0;
    }
    spin_unlock_bh(&psock->ingress_lock);
    + if (err < 0) {
    + skb_bpf_redirect_clear(skb);
    + goto out_free;
    + }
    }
    break;
    case __SK_REDIRECT:
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 11:09    [W:4.023 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site