diff options
author | Nikolay Aleksandrov <nikolay@nvidia.com> | 2021-11-22 18:15:12 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-11-22 18:44:49 +0300 |
commit | 8837cbbf854246f5f4d565f21e6baa945d37aded (patch) | |
tree | 23c2e14d568ef38ace50fa87f761599df6601068 /include/net/ipv6_stubs.h | |
parent | 4177d5b017a71433d4760889b88f7a29e11fad10 (diff) | |
download | linux-8837cbbf854246f5f4d565f21e6baa945d37aded.tar.xz |
net: ipv6: add fib6_nh_release_dsts stub
We need a way to release a fib6_nh's per-cpu dsts when replacing
nexthops otherwise we can end up with stale per-cpu dsts which hold net
device references, so add a new IPv6 stub called fib6_nh_release_dsts.
It must be used after an RCU grace period, so no new dsts can be created
through a group's nexthop entry.
Similar to fib6_nh_release it shouldn't be used if fib6_nh_init has failed
so it doesn't need a dummy stub when IPv6 is not enabled.
Fixes: 7bf4796dd099 ("nexthops: add support for replace")
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/ipv6_stubs.h')
-rw-r--r-- | include/net/ipv6_stubs.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/ipv6_stubs.h b/include/net/ipv6_stubs.h index afbce90c4480..45e0339be6fa 100644 --- a/include/net/ipv6_stubs.h +++ b/include/net/ipv6_stubs.h @@ -47,6 +47,7 @@ struct ipv6_stub { struct fib6_config *cfg, gfp_t gfp_flags, struct netlink_ext_ack *extack); void (*fib6_nh_release)(struct fib6_nh *fib6_nh); + void (*fib6_nh_release_dsts)(struct fib6_nh *fib6_nh); void (*fib6_update_sernum)(struct net *net, struct fib6_info *rt); int (*ip6_del_rt)(struct net *net, struct fib6_info *rt, bool skip_notify); void (*fib6_rt_update)(struct net *net, struct fib6_info *rt, |