netfilter: xt_hashlimit fix
authorEric Dumazet <dada1@cosmosbay.com>
Tue, 24 Feb 2009 14:30:29 +0000 (15:30 +0100)
committerPatrick McHardy <kaber@trash.net>
Tue, 24 Feb 2009 14:30:29 +0000 (15:30 +0100)
Commit 784544739a25c30637397ace5489eeb6e15d7d49
(netfilter: iptables: lock free counters) broke xt_hashlimit netfilter module :

This module was storing a pointer inside its xt_hashlimit_info, and this pointer
is not relocated when we temporarly switch tables (iptables -L).

This hack is not not needed at all (probably a leftover from
ancient time), as each cpu should and can access to its own copy.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
net/netfilter/xt_hashlimit.c

index 2482055..a5b5369 100644 (file)
@@ -565,8 +565,7 @@ hashlimit_init_dst(const struct xt_hashlimit_htable *hinfo,
 static bool
 hashlimit_mt_v0(const struct sk_buff *skb, const struct xt_match_param *par)
 {
-       const struct xt_hashlimit_info *r =
-               ((const struct xt_hashlimit_info *)par->matchinfo)->u.master;
+       const struct xt_hashlimit_info *r = par->matchinfo;
        struct xt_hashlimit_htable *hinfo = r->hinfo;
        unsigned long now = jiffies;
        struct dsthash_ent *dh;
@@ -702,8 +701,6 @@ static bool hashlimit_mt_check_v0(const struct xt_mtchk_param *par)
        }
        mutex_unlock(&hlimit_mutex);
 
-       /* Ugly hack: For SMP, we only want to use one set */
-       r->u.master = r;
        return true;
 }