lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 062/167] rxrpc: Dont try to resend the request if were receiving the reply
    Date
    From: David Howells <dhowells@redhat.com>

    [ Upstream commit 114af61f88fbe34d641b13922d098ffec4c1be1b ]

    rxrpc has a timer to trigger resending of unacked data packets in a call.
    This is not cancelled when a client call switches to the receive phase on
    the basis that most calls don't last long enough for it to ever expire.
    However, if it *does* expire after we've started to receive the reply, we
    shouldn't then go into trying to retransmit or pinging the server to find
    out if an ack got lost.

    Fix this by skipping the resend code if we're into receiving the reply to a
    client call.

    Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/rxrpc/call_event.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/net/rxrpc/call_event.c b/net/rxrpc/call_event.c
    index 97a17ada4431..4aae0904ae1b 100644
    --- a/net/rxrpc/call_event.c
    +++ b/net/rxrpc/call_event.c
    @@ -403,7 +403,8 @@ void rxrpc_process_call(struct work_struct *work)
    goto recheck_state;
    }

    - if (test_and_clear_bit(RXRPC_CALL_EV_RESEND, &call->events)) {
    + if (test_and_clear_bit(RXRPC_CALL_EV_RESEND, &call->events) &&
    + call->state != RXRPC_CALL_CLIENT_RECV_REPLY) {
    rxrpc_resend(call, now);
    goto recheck_state;
    }
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 12:21    [W:2.377 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site