mbox series

[net-next,v3,0/3] bhash2 binding table fixups

Message ID 20220611021646.1578080-1-joannelkoong@gmail.com (mailing list archive)
Headers show
Series bhash2 binding table fixups | expand

Message

Joanne Koong June 11, 2022, 2:16 a.m. UTC
There are two fix-ups related to the bhash2 binding table in this
patchset:

1) Fixes an inconsistency in the bhash2 table in the case where a
socket's rcv saddr changes after it is binded.

2) Fixes the case where the bhash2 hashbucket is accessed concurrently
by sockets that hash to different bhash hashbuckets. To address this, the
bhash2 hashbucket has its own lock.

--
v2 -> v3:
v2:
https://lore.kernel.org/netdev/20220602165101.3188482-1-joannelkoong@gmail.com/
* Add a patch that adds bhash2 hashbucket locks

v1 -> v2:
v1:
https://lore.kernel.org/netdev/20220601201434.1710931-1-joannekoong@fb.com/
* Mark __inet_bhash2_update_saddr as static

Joanne Koong (3):
  net: Update bhash2 when socket's rcv saddr changes
  net: Add bhash2 hashbucket locks
  selftests/net: Add sk_bind_sendto_listen test

 include/net/inet_hashtables.h                 |  31 +++--
 include/net/ipv6.h                            |   2 +-
 net/dccp/ipv4.c                               |  10 +-
 net/dccp/ipv6.c                               |   4 +-
 net/dccp/proto.c                              |   3 +-
 net/ipv4/af_inet.c                            |   7 +-
 net/ipv4/inet_connection_sock.c               |  60 +++++----
 net/ipv4/inet_hashtables.c                    | 115 +++++++++++++-----
 net/ipv4/tcp.c                                |   7 +-
 net/ipv4/tcp_ipv4.c                           |   8 +-
 net/ipv6/inet6_hashtables.c                   |   4 +-
 net/ipv6/tcp_ipv6.c                           |   4 +-
 tools/testing/selftests/net/.gitignore        |   1 +
 tools/testing/selftests/net/Makefile          |   1 +
 .../selftests/net/sk_bind_sendto_listen.c     |  82 +++++++++++++
 15 files changed, 251 insertions(+), 88 deletions(-)
 create mode 100644 tools/testing/selftests/net/sk_bind_sendto_listen.c