linux/net/netfilter/ipvs
Xin Long 2a31e4bd9a ipvs: call ip_vs_dst_notifier earlier than ipv6_dev_notf
ip_vs_dst_event is supposed to clean up all dst used in ipvs'
destinations when a net dev is going down. But it works only
when the dst's dev is the same as the dev from the event.

Now with the same priority but late registration,
ip_vs_dst_notifier is always called later than ipv6_dev_notf
where the dst's dev is set to lo for NETDEV_DOWN event.

As the dst's dev lo is not the same as the dev from the event
in ip_vs_dst_event, ip_vs_dst_notifier doesn't actually work.
Also as these dst have to wait for dest_trash_timer to clean
them up. It would cause some non-permanent kernel warnings:

  unregister_netdevice: waiting for br0 to become free. Usage count = 3

To fix it, call ip_vs_dst_notifier earlier than ipv6_dev_notf
by increasing its priority to ADDRCONF_NOTIFY_PRIORITY + 5.

Note that for ipv4 route fib_netdev_notifier doesn't set dst's
dev to lo in NETDEV_DOWN event, so this fix is only needed when
IP_VS_IPV6 is defined.

Fixes: 7a4f0761fc ("IPVS: init and cleanup restructuring")
Reported-by: Li Shuang <shuali@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Acked-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2018-11-26 10:23:42 +01:00
..
ip_vs_app.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-06-06 18:39:49 -07:00
ip_vs_conn.c ipvs: don't show negative times in ip_vs_conn 2018-08-16 19:36:57 +02:00
ip_vs_core.c net-ipv4: remove 2 always zero parameters from ipv4_update_pmtu() 2018-09-26 20:30:55 -07:00
ip_vs_ctl.c ipvs: call ip_vs_dst_notifier earlier than ipv6_dev_notf 2018-11-26 10:23:42 +01:00
ip_vs_dh.c ipvs: fix multiplicative hashing in sh/dh/lblc/lblcr algorithms 2018-04-09 10:15:27 +03:00
ip_vs_est.c netfilter: ipvs: Convert timers to use timer_setup() 2017-11-08 15:53:58 -08:00
ip_vs_fo.c
ip_vs_ftp.c ipvs: add ipv6 support to ftp 2018-06-01 14:01:54 +02:00
ip_vs_lblc.c ipvs: initialize tbl->entries in ip_vs_lblc_init_svc() 2018-04-27 00:20:33 +02:00
ip_vs_lblcr.c ipvs: initialize tbl->entries after allocation 2018-04-27 00:20:33 +02:00
ip_vs_lc.c
ip_vs_mh.c treewide: convert ISO_8859-1 text comments to utf-8 2018-08-23 18:48:43 -07:00
ip_vs_nfct.c ipvs: add full ipv6 support to nfct 2018-06-01 14:01:54 +02:00
ip_vs_nq.c netfilter: refcounter conversions 2017-03-17 12:49:43 +01:00
ip_vs_ovf.c ipvs: Add ovf scheduler 2015-08-21 09:08:39 -07:00
ip_vs_pe_sip.c ipvs: handle connections started by real-servers 2016-04-20 12:34:17 +10:00
ip_vs_pe.c
ip_vs_proto_ah_esp.c ipvs: Pass ipvs into .conn_schedule and ip_vs_try_to_schedule 2015-09-24 09:34:41 +09:00
ip_vs_proto_sctp.c ipvs: add assured state for conn templates 2018-07-18 11:26:40 +02:00
ip_vs_proto_tcp.c ipvs: add assured state for conn templates 2018-07-18 11:26:40 +02:00
ip_vs_proto_udp.c ipvs: add assured state for conn templates 2018-07-18 11:26:40 +02:00
ip_vs_proto.c ipvs: add assured state for conn templates 2018-07-18 11:26:40 +02:00
ip_vs_rr.c netfilter: refcounter conversions 2017-03-17 12:49:43 +01:00
ip_vs_sched.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next 2015-08-04 23:57:45 -07:00
ip_vs_sed.c netfilter: refcounter conversions 2017-03-17 12:49:43 +01:00
ip_vs_sh.c ipvs: fix multiplicative hashing in sh/dh/lblc/lblcr algorithms 2018-04-09 10:15:27 +03:00
ip_vs_sync.c iov_iter: Separate type from direction and use accessor functions 2018-10-24 00:41:07 +01:00
ip_vs_wlc.c netfilter: refcounter conversions 2017-03-17 12:49:43 +01:00
ip_vs_wrr.c netfilter: refcounter conversions 2017-03-17 12:49:43 +01:00
ip_vs_xmit.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf 2018-06-11 14:24:32 -07:00
Kconfig treewide: convert ISO_8859-1 text comments to utf-8 2018-08-23 18:48:43 -07:00
Makefile netfilter: ipvs: Add configurations of Maglev hashing 2018-04-09 10:11:18 +03:00