netfilter: x_tables: pass xt_counters struct instead of packet counter
On SMP we overload the packet counter (unsigned long) to contain percpu offset. Hide this from callers and pass xt_counters address instead. Preparation patch to allocate the percpu counters in page-sized batch chunks. Signed-off-by: Florian Westphal <fw@strlen.de> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:

committed by
Pablo Neira Ayuso

parent
679972f3be
commit
4d31eef517
@@ -439,7 +439,7 @@ find_check_entry(struct arpt_entry *e, const char *name, unsigned int size)
|
||||
err:
|
||||
module_put(t->u.kernel.target->me);
|
||||
out:
|
||||
xt_percpu_counter_free(e->counters.pcnt);
|
||||
xt_percpu_counter_free(&e->counters);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -519,7 +519,7 @@ static inline void cleanup_entry(struct arpt_entry *e)
|
||||
if (par.target->destroy != NULL)
|
||||
par.target->destroy(&par);
|
||||
module_put(par.target->me);
|
||||
xt_percpu_counter_free(e->counters.pcnt);
|
||||
xt_percpu_counter_free(&e->counters);
|
||||
}
|
||||
|
||||
/* Checks and translates the user-supplied table segment (held in
|
||||
|
@@ -582,7 +582,7 @@ find_check_entry(struct ipt_entry *e, struct net *net, const char *name,
|
||||
cleanup_match(ematch, net);
|
||||
}
|
||||
|
||||
xt_percpu_counter_free(e->counters.pcnt);
|
||||
xt_percpu_counter_free(&e->counters);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -670,7 +670,7 @@ cleanup_entry(struct ipt_entry *e, struct net *net)
|
||||
if (par.target->destroy != NULL)
|
||||
par.target->destroy(&par);
|
||||
module_put(par.target->me);
|
||||
xt_percpu_counter_free(e->counters.pcnt);
|
||||
xt_percpu_counter_free(&e->counters);
|
||||
}
|
||||
|
||||
/* Checks and translates the user-supplied table segment (held in
|
||||
|
Reference in New Issue
Block a user