diff options
author | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2011-03-25 11:10:29 +0100 |
---|---|---|
committer | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2011-03-25 11:10:29 +0100 |
commit | d90a2f5b8998f9063ff8aa7ae0fb301e3933f709 (patch) | |
tree | 5788a1833816977c3f6004136d591e6737c9102e /kernel/include/linux/netfilter/ipset/ip_set_ahash.h | |
parent | 48509af4bc2a60c368c46f1351ddf5370e012bc0 (diff) |
References are protected by rwlock instead of mutex
The timeout variant of the list:set type must reference the member sets.
However, its garbage collector runs at timer interrupt so the mutex protection
of the references is a no go. Therefore the reference protection
is converted to rwlock.
Diffstat (limited to 'kernel/include/linux/netfilter/ipset/ip_set_ahash.h')
-rw-r--r-- | kernel/include/linux/netfilter/ipset/ip_set_ahash.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/kernel/include/linux/netfilter/ipset/ip_set_ahash.h b/kernel/include/linux/netfilter/ipset/ip_set_ahash.h index ec9d9be..a0196ac 100644 --- a/kernel/include/linux/netfilter/ipset/ip_set_ahash.h +++ b/kernel/include/linux/netfilter/ipset/ip_set_ahash.h @@ -515,8 +515,7 @@ type_pf_head(struct ip_set *set, struct sk_buff *skb) if (h->netmask != HOST_MASK) NLA_PUT_U8(skb, IPSET_ATTR_NETMASK, h->netmask); #endif - NLA_PUT_NET32(skb, IPSET_ATTR_REFERENCES, - htonl(atomic_read(&set->ref) - 1)); + NLA_PUT_NET32(skb, IPSET_ATTR_REFERENCES, htonl(set->ref - 1)); NLA_PUT_NET32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)); if (with_timeout(h->timeout)) NLA_PUT_NET32(skb, IPSET_ATTR_TIMEOUT, htonl(h->timeout)); |