• David Howells's avatar
    rxrpc: Fix Tx ring annotation after initial Tx failure · 03877bf6
    David Howells authored
    rxrpc calls have a ring of packets that are awaiting ACK or retransmission
    and a parallel ring of annotations that tracks the state of those packets.
    If the initial transmission of a packet on the underlying UDP socket fails
    then the packet annotation is marked for resend - but the setting of this
    mark accidentally erases the last-packet mark also stored in the same
    annotation slot.  If this happens, a call won't switch out of the Tx phase
    when all the packets have been transmitted.
    
    Fix this by retaining the last-packet mark and only altering the packet
    state.
    
    Fixes: 248f219c ("rxrpc: Rewrite the data and ack handling code")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    03877bf6
sendmsg.c 21.2 KB