]> 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)
commit09946f5b26860cf34906b933bde5afc4571f5f70
treec74d50c59f37ae3e636d6976734762811e118c27
parent45af60bd88af431bdc4bdf079372f8daf05e5f97
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