netfilter: nf_queue: prefer nf_queue_entry_free
Instead of dropping refs+kfree, use the helper added in previous patch. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
af370ab36f
commit
28f715b9e6
|
@ -155,18 +155,16 @@ static void nf_ip6_saveroute(const struct sk_buff *skb,
|
|||
static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
|
||||
unsigned int index, unsigned int queuenum)
|
||||
{
|
||||
int status = -ENOENT;
|
||||
struct nf_queue_entry *entry = NULL;
|
||||
const struct nf_queue_handler *qh;
|
||||
struct net *net = state->net;
|
||||
unsigned int route_key_size;
|
||||
int status;
|
||||
|
||||
/* QUEUE == DROP if no one is waiting, to be safe. */
|
||||
qh = rcu_dereference(net->nf.queue_handler);
|
||||
if (!qh) {
|
||||
status = -ESRCH;
|
||||
goto err;
|
||||
}
|
||||
if (!qh)
|
||||
return -ESRCH;
|
||||
|
||||
switch (state->pf) {
|
||||
case AF_INET:
|
||||
|
@ -181,14 +179,12 @@ static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
|
|||
}
|
||||
|
||||
entry = kmalloc(sizeof(*entry) + route_key_size, GFP_ATOMIC);
|
||||
if (!entry) {
|
||||
status = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
if (!entry)
|
||||
return -ENOMEM;
|
||||
|
||||
if (skb_dst(skb) && !skb_dst_force(skb)) {
|
||||
status = -ENETDOWN;
|
||||
goto err;
|
||||
kfree(entry);
|
||||
return -ENETDOWN;
|
||||
}
|
||||
|
||||
*entry = (struct nf_queue_entry) {
|
||||
|
@ -212,17 +208,12 @@ static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
|
|||
}
|
||||
|
||||
status = qh->outfn(entry, queuenum);
|
||||
|
||||
if (status < 0) {
|
||||
nf_queue_entry_release_refs(entry);
|
||||
goto err;
|
||||
nf_queue_entry_free(entry);
|
||||
return status;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
kfree(entry);
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Packets leaving via this function must come back through nf_reinject(). */
|
||||
|
|
Loading…
Reference in New Issue