Message ID | 20220618034705.2809237-1-eric.dumazet@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | raw: RCU conversion | expand |
Hello: This series was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>: On Fri, 17 Jun 2022 20:47:03 -0700 you wrote: > From: Eric Dumazet <edumazet@google.com> > > 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: > > [...] Here is the summary with links: - [v2,net-next,1/2] raw: use more conventional iterators (no matching commit) - [v2,net-next,2/2] raw: convert raw sockets to RCU https://git.kernel.org/netdev/net-next/c/0daf07e52709 You are awesome, thank you!
From: Eric Dumazet <edumazet@google.com> 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 stacks. Without this conversion, following script triggers soft lockups: for i in {1..48} do ping -f -n -q 127.0.0.1 & sleep 0.1 done Next step will be to convert ping sockets to RCU as well. v2: small issue in first patch, detected by kernel bot Polish second patch in net/ipv4/raw_diag.c Eric Dumazet (2): raw: use more conventional iterators raw: convert raw sockets to RCU include/net/raw.h | 16 +++-- include/net/rawv6.h | 7 +- net/ipv4/af_inet.c | 2 + net/ipv4/raw.c | 162 +++++++++++++++++--------------------------- net/ipv4/raw_diag.c | 53 ++++++++------- net/ipv6/af_inet6.c | 3 + net/ipv6/raw.c | 119 ++++++++++++-------------------- 7 files changed, 157 insertions(+), 205 deletions(-)