Loading net/netfilter/nf_queue.c +9 −18 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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) { Loading @@ -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 Loading
net/netfilter/nf_queue.c +9 −18 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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) { Loading @@ -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