• Jason Baron's avatar
    tcp: correct read of TFO keys on big endian systems · f19008e6
    Jason Baron authored
    When TFO keys are read back on big endian systems either via the global
    sysctl interface or via getsockopt() using TCP_FASTOPEN_KEY, the values
    don't match what was written.
    
    For example, on s390x:
    
    # echo "1-2-3-4" > /proc/sys/net/ipv4/tcp_fastopen_key
    # cat /proc/sys/net/ipv4/tcp_fastopen_key
    02000000-01000000-04000000-03000000
    
    Instead of:
    
    # cat /proc/sys/net/ipv4/tcp_fastopen_key
    00000001-00000002-00000003-00000004
    
    Fix this by converting to the correct endianness on read. This was
    reported by Colin Ian King when running the 'tcp_fastopen_backup_key' net
    selftest on s390x, which depends on the read value matching what was
    written. I've confirmed that the test now passes on big and little endian
    systems.
    Signed-off-by: default avatarJason Baron <jbaron@akamai.com>
    Fixes: 438ac880 ("net: fastopen: robustness and endianness fixes for SipHash")
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Eric Dumazet <edumazet@google.com>
    Reported-and-tested-by: default avatarColin Ian King <colin.king@canonical.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f19008e6
tcp_fastopen.c 16.5 KB