Re: [PATCH net v2 0/3] net: nexthop: fix refcount issues when replacing groups
From: patchwork-bot+netdevbpf@kernel.org
Date: 2021-11-22 16:00:13
Hello: This series was applied to netdev/net.git (master) by David S. Miller [off-list ref]: On Mon, 22 Nov 2021 17:15:11 +0200 you wrote:
From: Nikolay Aleksandrov <redacted> Hi, This set fixes a refcount bug when replacing nexthop groups and modifying routes. It is complex because the objects look valid when debugging memory dumps, but we end up having refcount dependency between unlinked objects which can never be released, so in turn they cannot free their resources and refcounts. The problem happens because we can have stale IPv6 per-cpu dsts in nexthops which were removed from a group. Even though the IPv6 gen is bumped, the dsts won't be released until traffic passes through them or the nexthop is freed, that can take arbitrarily long time, and even worse we can create a scenario[1] where it can never be released. The fix is to release the IPv6 per-cpu dsts of replaced nexthops after an RCU grace period so no new ones can be created. To do that we add a new IPv6 stub - fib6_nh_release_dsts, which is used by the nexthop code only when necessary. We can further optimize group replacement, but that is more suited for net-next as these patches would have to be backported to stable releases. [...]
Here is the summary with links:
- [net,v2,1/3] net: ipv6: add fib6_nh_release_dsts stub
https://git.kernel.org/netdev/net/c/8837cbbf8542
- [net,v2,2/3] net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group
https://git.kernel.org/netdev/net/c/1005f19b9357
- [net,v2,3/3] selftests: net: fib_nexthops: add test for group refcount imbalance bug
https://git.kernel.org/netdev/net/c/02ebe49ab061
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html