Patch "rxrpc: Don't try to resend the request if we're receiving the reply" has been added to the 5.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    rxrpc: Don't try to resend the request if we're receiving the reply

to the 5.18-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rxrpc-don-t-try-to-resend-the-request-if-we-re-recei.patch
and it can be found in the queue-5.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 00463ff39afafdbab754a732d7735cdc068496f8
Author: David Howells <dhowells@xxxxxxxxxx>
Date:   Sat May 21 09:03:11 2022 +0100

    rxrpc: Don't try to resend the request if we're receiving the reply
    
    [ 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@xxxxxxxxxx>
    cc: linux-afs@xxxxxxxxxxxxxxxxxxx
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/rxrpc/call_event.c b/net/rxrpc/call_event.c
index e426f6831aab..f8ecad2b730e 100644
--- a/net/rxrpc/call_event.c
+++ b/net/rxrpc/call_event.c
@@ -406,7 +406,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;
 	}



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux