netfilter: xt_hashlimit fix
Commit 784544739a
(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>
This commit is contained in:
committed by
Patrick McHardy
parent
d060ffc184
commit
28337ff543
@@ -565,8 +565,7 @@ hashlimit_init_dst(const struct xt_hashlimit_htable *hinfo,
|
|||||||
static bool
|
static bool
|
||||||
hashlimit_mt_v0(const struct sk_buff *skb, const struct xt_match_param *par)
|
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 *r = par->matchinfo;
|
||||||
((const struct xt_hashlimit_info *)par->matchinfo)->u.master;
|
|
||||||
struct xt_hashlimit_htable *hinfo = r->hinfo;
|
struct xt_hashlimit_htable *hinfo = r->hinfo;
|
||||||
unsigned long now = jiffies;
|
unsigned long now = jiffies;
|
||||||
struct dsthash_ent *dh;
|
struct dsthash_ent *dh;
|
||||||
@@ -702,8 +701,6 @@ static bool hashlimit_mt_check_v0(const struct xt_mtchk_param *par)
|
|||||||
}
|
}
|
||||||
mutex_unlock(&hlimit_mutex);
|
mutex_unlock(&hlimit_mutex);
|
||||||
|
|
||||||
/* Ugly hack: For SMP, we only want to use one set */
|
|
||||||
r->u.master = r;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user