• David Howells's avatar
    rxrpc: Fix generation of serial numbers to skip zero · f3104141
    David Howells authored
    In the Rx protocol, every packet generated is marked with a per-connection
    monotonically increasing serial number.  This number can be referenced in
    an ACK packet generated in response to an incoming packet - thereby
    allowing the sender to use this for RTT determination, amongst other
    things.
    
    However, if the reference field in the ACK is zero, it doesn't refer to any
    incoming packet (it could be a ping to find out if a packet got lost, for
    example) - so we shouldn't generate zero serial numbers.
    
    Fix the generation of serial numbers to retry if it comes up with a zero.
    
    Furthermore, since the serial numbers are only ever allocated within the
    I/O thread this connection is bound to, there's no need for atomics so
    remove that too.
    
    Fixes: 17926a79 ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: "David S. Miller" <davem@davemloft.net>
    cc: Eric Dumazet <edumazet@google.com>
    cc: Jakub Kicinski <kuba@kernel.org>
    cc: Paolo Abeni <pabeni@redhat.com>
    cc: linux-afs@lists.infradead.org
    cc: netdev@vger.kernel.org
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f3104141
output.c 19.8 KB