]> granicus.if.org Git - ipset/commitdiff
Call rcu_barrier() in module removal path
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Wed, 10 Dec 2014 06:34:43 +0000 (07:34 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Wed, 10 Dec 2014 06:34:43 +0000 (07:34 +0100)
12 files changed:
kernel/net/netfilter/ipset/ip_set_hash_ip.c
kernel/net/netfilter/ipset/ip_set_hash_ipmark.c
kernel/net/netfilter/ipset/ip_set_hash_ipport.c
kernel/net/netfilter/ipset/ip_set_hash_ipportip.c
kernel/net/netfilter/ipset/ip_set_hash_ipportnet.c
kernel/net/netfilter/ipset/ip_set_hash_mac.c
kernel/net/netfilter/ipset/ip_set_hash_net.c
kernel/net/netfilter/ipset/ip_set_hash_netiface.c
kernel/net/netfilter/ipset/ip_set_hash_netnet.c
kernel/net/netfilter/ipset/ip_set_hash_netport.c
kernel/net/netfilter/ipset/ip_set_hash_netportnet.c
kernel/net/netfilter/ipset/ip_set_list_set.c

index 76959d79e9d1f67e4618b494bd265ceb0acb57a6..247cbc494b9a612d1508674eac426f8ec5695509 100644 (file)
@@ -318,6 +318,7 @@ hash_ip_init(void)
 static void __exit
 hash_ip_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_ip_type);
 }
 
index 2ec4ac5bc672323c3a41ef407556dd805d564d9c..03c08ef152b66efc905f3f22f22b27acf6d81d32 100644 (file)
@@ -324,6 +324,7 @@ hash_ipmark_init(void)
 static void __exit
 hash_ipmark_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_ipmark_type);
 }
 
index dcbcceb9a52feea746d2b9d88a9a80e79d579bdb..7dc930456bad288c49bb7c992071b477cc8888d5 100644 (file)
@@ -393,6 +393,7 @@ hash_ipport_init(void)
 static void __exit
 hash_ipport_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_ipport_type);
 }
 
index 7ef93fc887a13b5e5d530a98a2bb3ae7f015d390..af70f860882a57cccdf5223b37ef633619fad8b3 100644 (file)
@@ -405,6 +405,7 @@ hash_ipportip_init(void)
 static void __exit
 hash_ipportip_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_ipportip_type);
 }
 
index 3d07f9308a71c655734eae9bee557b141622976a..b6f62ba2ad67b0168dfb609f26accd446fc4b05b 100644 (file)
@@ -566,6 +566,7 @@ hash_ipportnet_init(void)
 static void __exit
 hash_ipportnet_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_ipportnet_type);
 }
 
index 65690b52a4d584cce8a6b7ce2864f716f4d39fd1..809461b9e78d7417a4ce6189079f33e663b98d88 100644 (file)
@@ -166,6 +166,7 @@ hash_mac_init(void)
 static void __exit
 hash_mac_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_mac_type);
 }
 
index cb95064835e8019321e7a0992b7ba342635f1f3f..5b3128de11a6ddc10a1dae7c0fdb6fab9cfd36bf 100644 (file)
@@ -402,6 +402,7 @@ hash_net_init(void)
 static void __exit
 hash_net_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_net_type);
 }
 
index 8a182adac1ca827b5beefcf23e3ab8e874c26c6b..80d77ad1a57d6b56c2c8348d3ccd6ca7a4d4cb36 100644 (file)
@@ -493,6 +493,7 @@ hash_netiface_init(void)
 static void __exit
 hash_netiface_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_netiface_type);
 }
 
index ea4d06b4b3adf12fe8cad28fe7d7042e767bc77f..054b1ec37ddb6cad679cd3b0b7c0b8bb3d81b70c 100644 (file)
@@ -489,6 +489,7 @@ hash_netnet_init(void)
 static void __exit
 hash_netnet_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_netnet_type);
 }
 
index bc7a1c2f1ea2ec4ef6e77d4c37b3f37edd6d2cf9..8e6a466948295c9d2837b8426d6474605ff21189 100644 (file)
@@ -514,6 +514,7 @@ hash_netport_init(void)
 static void __exit
 hash_netport_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_netport_type);
 }
 
index f98d3f6defd34026547dace790371fb11aebed00..2095a721c70ab756f404dfc4e34418cf248ac19a 100644 (file)
@@ -596,6 +596,7 @@ hash_netportnet_init(void)
 static void __exit
 hash_netportnet_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&hash_netportnet_type);
 }
 
index 323115a5aebea8919685a0ca659a1d8fd4cf4a3c..c30183f9191a48276263f2311a20ef9ef821916f 100644 (file)
@@ -90,7 +90,7 @@ list_set_kadd(struct ip_set *set, const struct sk_buff *skb,
        struct set_elem *e;
        int ret;
 
-       list_for_each_entry_rcu(e, &map->members, list) {
+       list_for_each_entry(e, &map->members, list) {
                if (SET_WITH_TIMEOUT(set) &&
                    ip_set_timeout_expired(ext_timeout(e, set)))
                        continue;
@@ -110,7 +110,7 @@ list_set_kdel(struct ip_set *set, const struct sk_buff *skb,
        struct set_elem *e;
        int ret;
 
-       list_for_each_entry_rcu(e, &map->members, list) {
+       list_for_each_entry(e, &map->members, list) {
                if (SET_WITH_TIMEOUT(set) &&
                    ip_set_timeout_expired(ext_timeout(e, set)))
                        continue;
@@ -673,6 +673,7 @@ list_set_init(void)
 static void __exit
 list_set_fini(void)
 {
+       rcu_barrier();
        ip_set_type_unregister(&list_set_type);
 }