lkml.org 
[lkml]   [2022]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next v4 3/8] net: sock: introduce sk_stream_kill_queues_reason()
    Date
    From: Menglong Dong <imagedong@tencent.com>

    Introduce the function sk_stream_kill_queues_reason() and make the
    origin sk_stream_kill_queues() an inline call to it.

    Reviewed-by: Jiang Biao <benbjiang@tencent.com>
    Reviewed-by: Hao Peng <flyingpeng@tencent.com>
    Signed-off-by: Menglong Dong <imagedong@tencent.com>
    ---
    include/net/sock.h | 8 +++++++-
    net/core/stream.c | 7 ++++---
    2 files changed, 11 insertions(+), 4 deletions(-)

    diff --git a/include/net/sock.h b/include/net/sock.h
    index 657873e2d90f..208c87807f23 100644
    --- a/include/net/sock.h
    +++ b/include/net/sock.h
    @@ -1139,12 +1139,18 @@ int sk_stream_wait_connect(struct sock *sk, long *timeo_p);
    int sk_stream_wait_memory(struct sock *sk, long *timeo_p);
    void sk_stream_wait_close(struct sock *sk, long timeo_p);
    int sk_stream_error(struct sock *sk, int flags, int err);
    -void sk_stream_kill_queues(struct sock *sk);
    +void sk_stream_kill_queues_reason(struct sock *sk,
    + enum skb_drop_reason reason);
    void sk_set_memalloc(struct sock *sk);
    void sk_clear_memalloc(struct sock *sk);

    void __sk_flush_backlog(struct sock *sk);

    +static inline void sk_stream_kill_queues(struct sock *sk)
    +{
    + sk_stream_kill_queues_reason(sk, SKB_DROP_REASON_NOT_SPECIFIED);
    +}
    +
    static inline bool sk_flush_backlog(struct sock *sk)
    {
    if (unlikely(READ_ONCE(sk->sk_backlog.tail))) {
    diff --git a/net/core/stream.c b/net/core/stream.c
    index 06b36c730ce8..a562b23a1a6e 100644
    --- a/net/core/stream.c
    +++ b/net/core/stream.c
    @@ -190,10 +190,11 @@ int sk_stream_error(struct sock *sk, int flags, int err)
    }
    EXPORT_SYMBOL(sk_stream_error);

    -void sk_stream_kill_queues(struct sock *sk)
    +void sk_stream_kill_queues_reason(struct sock *sk,
    + enum skb_drop_reason reason)
    {
    /* First the read buffer. */
    - __skb_queue_purge(&sk->sk_receive_queue);
    + __skb_queue_purge_reason(&sk->sk_receive_queue, reason);

    /* Next, the write queue. */
    WARN_ON(!skb_queue_empty(&sk->sk_write_queue));
    @@ -209,4 +210,4 @@ void sk_stream_kill_queues(struct sock *sk)
    * have gone away, only the net layer knows can touch it.
    */
    }
    -EXPORT_SYMBOL(sk_stream_kill_queues);
    +EXPORT_SYMBOL(sk_stream_kill_queues_reason);
    --
    2.36.1
    \
     
     \ /
      Last update: 2022-06-17 12:07    [W:2.415 / U:0.396 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site