• David Howells's avatar
    rxrpc: Fix handling of last subpacket of jumbo packet · f9c32435
    David Howells authored
    When rxrpc_recvmsg_data() sets the return value to 1 because it's drained
    all the data for the last packet, it checks the last-packet flag on the
    whole packet - but this is wrong, since the last-packet flag is only set on
    the final subpacket of the last jumbo packet.  This means that a call that
    receives its last packet in a jumbo packet won't complete properly.
    
    Fix this by having rxrpc_locate_data() determine the last-packet state of
    the subpacket it's looking at and passing that back to the caller rather
    than having the caller look in the packet header.  The caller then needs to
    cache this in the rxrpc_call struct as rxrpc_locate_data() isn't then
    called again for this packet.
    
    Fixes: 248f219c ("rxrpc: Rewrite the data and ack handling code")
    Fixes: e2de6c40 ("rxrpc: Use info in skbuff instead of reparsing a jumbo packet")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f9c32435
ar-internal.h 42.3 KB