1. 29 Apr, 2020 1 commit
  2. 26 Apr, 2020 3 commits
    • Guillaume Nault's avatar
      netfilter: nat: never update the UDP checksum when it's 0 · ea64d8d6
      Guillaume Nault authored
      If the UDP header of a local VXLAN endpoint is NAT-ed, and the VXLAN
      device has disabled UDP checksums and enabled Tx checksum offloading,
      then the skb passed to udp_manip_pkt() has hdr->check == 0 (outer
      checksum disabled) and skb->ip_summed == CHECKSUM_PARTIAL (inner packet
      checksum offloaded).
      
      Because of the ->ip_summed value, udp_manip_pkt() tries to update the
      outer checksum with the new address and port, leading to an invalid
      checksum sent on the wire, as the original null checksum obviously
      didn't take the old address and port into account.
      
      So, we can't take ->ip_summed into account in udp_manip_pkt(), as it
      might not refer to the checksum we're acting on. Instead, we can base
      the decision to update the UDP checksum entirely on the value of
      hdr->check, because it's null if and only if checksum is disabled:
      
        * A fully computed checksum can't be 0, since a 0 checksum is
          represented by the CSUM_MANGLED_0 value instead.
      
        * A partial checksum can't be 0, since the pseudo-header always adds
          at least one non-zero value (the UDP protocol type 0x11) and adding
          more values to the sum can't make it wrap to 0 as the carry is then
          added to the wrapped number.
      
        * A disabled checksum uses the special value 0.
      
      The problem seems to be there from day one, although it was probably
      not visible before UDP tunnels were implemented.
      
      Fixes: 5b1158e9 ("[NETFILTER]: Add NAT support for nf_conntrack")
      Signed-off-by: default avatarGuillaume Nault <gnault@redhat.com>
      Reviewed-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      ea64d8d6
    • Eric Dumazet's avatar
      net: remove obsolete comment · 52a90612
      Eric Dumazet authored
      Commit b6567229 ("net: Increase the size of skb_frag_t")
      removed the 16bit limitation of a frag on some 32bit arches.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52a90612
    • Paolo Abeni's avatar
      mptcp: fix race in msk status update · 1200832c
      Paolo Abeni authored
      Currently subflow_finish_connect() changes unconditionally
      any msk socket status other than TCP_ESTABLISHED.
      
      If an unblocking connect() races with close(), we can end-up
      triggering:
      
      IPv4: Attempt to release TCP socket in state 1 00000000e32b8b7e
      
      when the msk socket is disposed.
      
      Be sure to enter the established status only from SYN_SENT.
      
      Fixes: c3c123d1 ("net: mptcp: don't hang in mptcp_sendmsg() after TCP fallback")
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1200832c
  3. 25 Apr, 2020 18 commits
  4. 24 Apr, 2020 18 commits