Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[firefly-linux-kernel-4.4.55.git] / net / netfilter / ipvs / ip_vs_lc.c
index f391819c0ccad893ff1b07b59a0bfb7a8005ed66..5128e338a749dc8dd9c2846607fc95f25ac59054 100644 (file)
@@ -42,7 +42,7 @@ ip_vs_lc_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
         * served, but no new connection is assigned to the server.
         */
 
-       list_for_each_entry(dest, &svc->destinations, n_list) {
+       list_for_each_entry_rcu(dest, &svc->destinations, n_list) {
                if ((dest->flags & IP_VS_DEST_F_OVERLOAD) ||
                    atomic_read(&dest->weight) == 0)
                        continue;
@@ -84,6 +84,7 @@ static int __init ip_vs_lc_init(void)
 static void __exit ip_vs_lc_cleanup(void)
 {
        unregister_ip_vs_scheduler(&ip_vs_lc_scheduler);
+       synchronize_rcu();
 }
 
 module_init(ip_vs_lc_init);