[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220623043449.1217288-1-edumazet@google.com>
Date: Thu, 23 Jun 2022 04:34:30 +0000
From: Eric Dumazet <edumazet@...gle.com>
To: "David S . Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: netdev@...r.kernel.org, eric.dumazet@...il.com,
Eric Dumazet <edumazet@...gle.com>
Subject: [PATCH v2 net-next 00/19] ipmr: get rid of rwlocks
We need to get rid of rwlocks in networking stacks,
if read_lock() is (ab)used from softirq context.
As discussed recently [1], rwlock are unfair by design in this case,
and writers can starve and trigger soft lockups.
This series convert ipmr code (both IPv4 and IPv6 families)
to RCU and spinlocks.
[1] https://lkml.org/lkml/2022/6/17/272
v2: fixed two typos, and resent because patch 19/19
did not make it to patchwork.
Eric Dumazet (19):
ip6mr: do not get a device reference in pim6_rcv()
ipmr: add rcu protection over (struct vif_device)->dev
ipmr: change igmpmsg_netlink_event() prototype
ipmr: ipmr_cache_report() changes
ipmr: do not acquire mrt_lock in __pim_rcv()
ipmr: do not acquire mrt_lock in ioctl(SIOCGETVIFCNT)
ipmr: do not acquire mrt_lock before calling ipmr_cache_unresolved()
ipmr: do not acquire mrt_lock while calling ip_mr_forward()
ipmr: do not acquire mrt_lock in ipmr_get_route()
ip6mr: ip6mr_cache_report() changes
ip6mr: do not acquire mrt_lock in pim6_rcv()
ip6mr: do not acquire mrt_lock in ioctl(SIOCGETMIFCNT_IN6)
ip6mr: do not acquire mrt_lock before calling ip6mr_cache_unresolved
ip6mr: do not acquire mrt_lock while calling ip6_mr_forward()
ip6mr: switch ip6mr_get_route() to rcu_read_lock()
ipmr: adopt rcu_read_lock() in mr_dump()
ipmr: convert /proc handlers to rcu_read_lock()
ipmr: convert mrt_lock to a spinlock
ip6mr: convert mrt_lock to a spinlock
include/linux/mroute_base.h | 15 ++-
net/ipv4/ipmr.c | 215 +++++++++++++++++++-----------------
net/ipv4/ipmr_base.c | 53 +++++----
net/ipv6/ip6mr.c | 202 ++++++++++++++++-----------------
4 files changed, 255 insertions(+), 230 deletions(-)
--
2.37.0.rc0.104.g0611611a94-goog
Powered by blists - more mailing lists