# 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 
- List: netdev
- Page: https://ratatoskr.run/netdev/2021/11/11216702
- Thread: https://ratatoskr.run/netdev/2021/11/11216697/t.md

```text
Hello:

This series was applied to netdev/net.git (master)
by David S. Miller [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


```
