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 261/779] net: fix sk_wmem_schedule() and sk_rmem_schedule() errors
    Date
    From: Eric Dumazet <edumazet@google.com>

    [ Upstream commit 7c80b038d23e1f4c7fcc311f43f83b8c60e7fb80 ]

    If sk->sk_forward_alloc is 150000, and we need to schedule 150001 bytes,
    we want to allocate 1 byte more (rounded up to one page),
    instead of 150001 :/

    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    include/net/sock.h | 12 ++++++++----
    1 file changed, 8 insertions(+), 4 deletions(-)

    diff --git a/include/net/sock.h b/include/net/sock.h
    index 819c53965ef3..e0a88bb0a58c 100644
    --- a/include/net/sock.h
    +++ b/include/net/sock.h
    @@ -1507,19 +1507,23 @@ static inline bool sk_has_account(struct sock *sk)

    static inline bool sk_wmem_schedule(struct sock *sk, int size)
    {
    + int delta;
    +
    if (!sk_has_account(sk))
    return true;
    - return size <= sk->sk_forward_alloc ||
    - __sk_mem_schedule(sk, size, SK_MEM_SEND);
    + delta = size - sk->sk_forward_alloc;
    + return delta <= 0 || __sk_mem_schedule(sk, delta, SK_MEM_SEND);
    }

    static inline bool
    sk_rmem_schedule(struct sock *sk, struct sk_buff *skb, int size)
    {
    + int delta;
    +
    if (!sk_has_account(sk))
    return true;
    - return size <= sk->sk_forward_alloc ||
    - __sk_mem_schedule(sk, size, SK_MEM_RECV) ||
    + delta = size - sk->sk_forward_alloc;
    + return delta <= 0 || __sk_mem_schedule(sk, delta, SK_MEM_RECV) ||
    skb_pfmemalloc(skb);
    }

    --
    2.35.1


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