]> granicus.if.org Git - ipset/commitdiff
Revert patch "Correct rcu_dereference_bh_nfnl() usage"
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Thu, 10 Nov 2016 10:11:32 +0000 (11:11 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Thu, 10 Nov 2016 10:11:32 +0000 (11:11 +0100)
The susbsystem param cannot be used to rely on subsystem mutex locking
because the call is used in netlink dump context as well.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
kernel/net/netfilter/ipset/ip_set_hash_gen.h

index c9f0db681aa78dd79c48d952f71d0b8054d64e37..673c7aafa2a892b7054b294f082cdafdaec5c632 100644 (file)
@@ -17,9 +17,7 @@
 #define ipset_dereference_protected(p, set) \
        __ipset_dereference_protected(p, spin_is_locked(&(set)->lock))
 
-#ifndef rcu_dereference_bh_nfnl
-#define rcu_dereference_bh_nfnl(p, ss) rcu_dereference_bh_check(p, 1)
-#endif
+#define rcu_dereference_bh_nfnl(p)     rcu_dereference_bh_check(p, 1)
 
 /* Hashing which uses arrays to resolve clashing. The hash table is resized
  * (doubled) when searching becomes too long.
@@ -570,7 +568,7 @@ mtype_resize(struct ip_set *set, bool retried)
                return -ENOMEM;
 #endif
        rcu_read_lock_bh();
-       orig = rcu_dereference_bh_nfnl(h->table, NFNL_SUBSYS_IPSET);
+       orig = rcu_dereference_bh_nfnl(h->table);
        htable_bits = orig->htable_bits;
        rcu_read_unlock_bh();
 
@@ -1051,7 +1049,7 @@ mtype_head(struct ip_set *set, struct sk_buff *skb)
        u8 htable_bits;
 
        rcu_read_lock_bh();
-       t = rcu_dereference_bh_nfnl(h->table, NFNL_SUBSYS_IPSET);
+       t = rcu_dereference_bh_nfnl(h->table);
        memsize = mtype_ahash_memsize(h, t) + set->ext_size;
        htable_bits = t->htable_bits;
        rcu_read_unlock_bh();
@@ -1094,7 +1092,7 @@ mtype_uref(struct ip_set *set, struct netlink_callback *cb, bool start)
 
        if (start) {
                rcu_read_lock_bh();
-               t = rcu_dereference_bh_nfnl(h->table, NFNL_SUBSYS_IPSET);
+               t = rcu_dereference_bh_nfnl(h->table);
                atomic_inc(&t->uref);
                cb->args[IPSET_CB_PRIVATE] = (unsigned long)t;
                rcu_read_unlock_bh();