lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 763/779] tcp: fix over estimation in sk_forced_mem_schedule()
    Date
    From: Eric Dumazet <edumazet@google.com>

    commit c4ee118561a0f74442439b7b5b486db1ac1ddfeb upstream.

    sk_forced_mem_schedule() has a bug similar to ones fixed
    in commit 7c80b038d23e ("net: fix sk_wmem_schedule() and
    sk_rmem_schedule() errors")

    While this bug has little chance to trigger in old kernels,
    we need to fix it before the following patch.

    Fixes: d83769a580f1 ("tcp: fix possible deadlock in tcp_send_fin()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Wei Wang <weiwan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/ipv4/tcp_output.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- a/net/ipv4/tcp_output.c
    +++ b/net/ipv4/tcp_output.c
    @@ -3372,11 +3372,12 @@ void tcp_xmit_retransmit_queue(struct so
    */
    void sk_forced_mem_schedule(struct sock *sk, int size)
    {
    - int amt;
    + int delta, amt;

    - if (size <= sk->sk_forward_alloc)
    + delta = size - sk->sk_forward_alloc;
    + if (delta <= 0)
    return;
    - amt = sk_mem_pages(size);
    + amt = sk_mem_pages(delta);
    sk->sk_forward_alloc += amt * SK_MEM_QUANTUM;
    sk_memory_allocated_add(sk, amt);


    \
     
     \ /
      Last update: 2022-08-15 22:04    [W:4.121 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site