]> git.baikalelectronics.ru Git - kernel.git/commit
raw: convert raw sockets to RCU
authorEric Dumazet <edumazet@google.com>
Sat, 18 Jun 2022 03:47:05 +0000 (20:47 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 19 Jun 2022 09:00:02 +0000 (10:00 +0100)
commitac209581dbbe44981f06883ce0cdf5f8bfe6e991
treec74d50c59f37ae3e636d6976734762811e118c27
parentd83bf44ec1ae378f5063d0a596fdbdfecc00aa4b
raw: convert raw sockets to RCU

Using rwlock in networking code is extremely risky.
writers can starve if enough readers are constantly
grabing the rwlock.

I thought rwlock were at fault and sent this patch:

https://lkml.org/lkml/2022/6/17/272

But Peter and Linus essentially told me rwlock had to be unfair.

We need to get rid of rwlock in networking code.

Without this fix, following script triggers soft lockups:

for i in {1..48}
do
 ping -f -n -q 127.0.0.1 &
 sleep 0.1
done

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/raw.h
include/net/rawv6.h
net/ipv4/af_inet.c
net/ipv4/raw.c
net/ipv4/raw_diag.c
net/ipv6/af_inet6.c
net/ipv6/raw.c