diff options
author | David S. Miller <davem@davemloft.net> | 2020-06-01 02:48:46 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-06-01 02:48:46 +0200 |
commit | 1806c13dc2532090d742ce03847b22367fb20ad6 (patch) | |
tree | 7507ddebec3046173a4308e1e0dd8701cd498d0f /net/xfrm/xfrm_interface.c | |
parent | Merge tag 'mac80211-next-for-davem-2020-05-31' of git://git.kernel.org/pub/sc... (diff) | |
parent | checkpatch/coding-style: deprecate 80-column warning (diff) | |
download | linux-1806c13dc2532090d742ce03847b22367fb20ad6.tar.xz linux-1806c13dc2532090d742ce03847b22367fb20ad6.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
xdp_umem.c had overlapping changes between the 64-bit math fix
for the calculation of npgs and the removal of the zerocopy
memory type which got rid of the chunk_size_nohdr member.
The mlx5 Kconfig conflict is a case where we just take the
net-next copy of the Kconfig entry dependency as it takes on
the ESWITCH dependency by one level of indirection which is
what the 'net' conflicting change is trying to ensure.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm/xfrm_interface.c')
-rw-r--r-- | net/xfrm/xfrm_interface.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_interface.c b/net/xfrm/xfrm_interface.c index 02f8f46d0cc5..c407ecbc5d46 100644 --- a/net/xfrm/xfrm_interface.c +++ b/net/xfrm/xfrm_interface.c @@ -748,7 +748,28 @@ static struct rtnl_link_ops xfrmi_link_ops __read_mostly = { .get_link_net = xfrmi_get_link_net, }; +static void __net_exit xfrmi_exit_batch_net(struct list_head *net_exit_list) +{ + struct net *net; + LIST_HEAD(list); + + rtnl_lock(); + list_for_each_entry(net, net_exit_list, exit_list) { + struct xfrmi_net *xfrmn = net_generic(net, xfrmi_net_id); + struct xfrm_if __rcu **xip; + struct xfrm_if *xi; + + for (xip = &xfrmn->xfrmi[0]; + (xi = rtnl_dereference(*xip)) != NULL; + xip = &xi->next) + unregister_netdevice_queue(xi->dev, &list); + } + unregister_netdevice_many(&list); + rtnl_unlock(); +} + static struct pernet_operations xfrmi_net_ops = { + .exit_batch = xfrmi_exit_batch_net, .id = &xfrmi_net_id, .size = sizeof(struct xfrmi_net), }; |