All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/5] Rework ip_ra_chain protection
@ 2018-03-15 13:19 Kirill Tkhai
  2018-03-15 13:20 ` [PATCH net-next 1/5] net: Revert "ipv4: get rid of ip_ra_lock" Kirill Tkhai
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Kirill Tkhai @ 2018-03-15 13:19 UTC (permalink / raw)
  To: davem, yoshfuji, edumazet, yanhaishuang, nikolay, yotamg, soheil,
	ktkhai, avagin, nicolas.dichtel, ebiederm, fw, roman.kapl,
	netdev, xiyou.wangcong, dvyukov, andreyknvl

Commit 1215e51edad1 "ipv4: fix a deadlock in ip_ra_control"
made rtnl_lock() be used in raw_close(). This function is called
on every RAW socket destruction, so that rtnl_mutex is taken
every time. This scales very sadly. I observe cleanup_net()
spending a lot of time in rtnl_lock() and raw_close() is one
of the biggest rtnl user (since we have percpu net->ipv4.icmp_sk).

Another problem is that commit does not explain actual call path
mrtsock_destruct() takes sk lock and the way to deadlock.
But there is no sk lock taking is visible in mrtsock_destruct().
So, it is a question does we need it at all.

This patchset reworks the locking: reverts the problem commit
and its descendant, and introduces rtnl-independent locking.
This may have a continuation, and someone may work on killing
rtnl_lock() in mrtsock_destruct() in the future.

Thanks,
Kirill
---

Kirill Tkhai (5):
      net: Revert "ipv4: get rid of ip_ra_lock"
      net: Revert "ipv4: fix a deadlock in ip_ra_control"
      net: Move IP_ROUTER_ALERT out of lock_sock(sk)
      net: Make ip_ra_chain per struct net
      net: Replace ip_ra_lock with per-net mutex


 include/net/ip.h         |   13 +++++++++++--
 include/net/netns/ipv4.h |    2 ++
 net/core/net_namespace.c |    1 +
 net/ipv4/ip_input.c      |    5 ++---
 net/ipv4/ip_sockglue.c   |   34 +++++++++++++---------------------
 net/ipv4/ipmr.c          |   11 +++++++++--
 net/ipv4/raw.c           |    2 --
 7 files changed, 38 insertions(+), 30 deletions(-)

--
Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-03-17 10:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-15 13:19 [PATCH net-next 0/5] Rework ip_ra_chain protection Kirill Tkhai
2018-03-15 13:20 ` [PATCH net-next 1/5] net: Revert "ipv4: get rid of ip_ra_lock" Kirill Tkhai
2018-03-15 13:20 ` [PATCH net-next 2/5] net: Revert "ipv4: fix a deadlock in ip_ra_control" Kirill Tkhai
2018-03-15 13:20 ` [PATCH net-next 3/5] net: Move IP_ROUTER_ALERT out of lock_sock(sk) Kirill Tkhai
2018-03-15 13:20 ` [PATCH net-next 4/5] net: Make ip_ra_chain per struct net Kirill Tkhai
2018-03-16 23:22   ` kbuild test robot
2018-03-17 10:21     ` Kirill Tkhai
2018-03-15 13:20 ` [PATCH net-next 5/5] net: Replace ip_ra_lock with per-net mutex Kirill Tkhai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.