diff options
author | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2011-03-29 15:00:43 +0200 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2011-03-29 15:00:43 +0200 |
commit | 6604271c5bc658a6067ed0c3deba4d89e0e50382 (patch) | |
tree | ce3a2840c08eabffad08de01022abbe6203218cc /net/netfilter/ipset/ip_set_bitmap_ipmac.c | |
parent | 49a341f2bb0e8eb2f2877956a758ea40cbd47b26 (diff) | |
download | linux-stable-6604271c5bc658a6067ed0c3deba4d89e0e50382.tar.gz linux-stable-6604271c5bc658a6067ed0c3deba4d89e0e50382.tar.bz2 linux-stable-6604271c5bc658a6067ed0c3deba4d89e0e50382.zip |
netfilter: ipset: 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.
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/netfilter/ipset/ip_set_bitmap_ipmac.c')
-rw-r--r-- | net/netfilter/ipset/ip_set_bitmap_ipmac.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/netfilter/ipset/ip_set_bitmap_ipmac.c b/net/netfilter/ipset/ip_set_bitmap_ipmac.c index 5e790172deff..00a33242e90c 100644 --- a/net/netfilter/ipset/ip_set_bitmap_ipmac.c +++ b/net/netfilter/ipset/ip_set_bitmap_ipmac.c @@ -434,8 +434,7 @@ bitmap_ipmac_head(struct ip_set *set, struct sk_buff *skb) goto nla_put_failure; NLA_PUT_IPADDR4(skb, IPSET_ATTR_IP, htonl(map->first_ip)); NLA_PUT_IPADDR4(skb, IPSET_ATTR_IP_TO, htonl(map->last_ip)); - 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(sizeof(*map) + (map->last_ip - map->first_ip + 1) * map->dsize)); |