diff options
author | David Miller <davem@davemloft.net> | 2015-04-06 04:19:00 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-04-07 21:25:55 +0200 |
commit | 1c984f8a5df085bcf35364a8a870bd4db4da4ed3 (patch) | |
tree | 14dcad3877bc1bb657a32888d2af007c13b9d856 /net | |
parent | netfilter: Add nf_hook_state initializer function. (diff) | |
download | linux-1c984f8a5df085bcf35364a8a870bd4db4da4ed3.tar.xz linux-1c984f8a5df085bcf35364a8a870bd4db4da4ed3.zip |
netfilter: Add socket pointer to nf_hook_state.
It is currently always set to NULL, but nf_queue is adjusted to be
prepared for it being set to a real socket by taking and releasing a
reference to that socket when necessary.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/nf_queue.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c index d3cd37edca18..c4a706678f88 100644 --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c @@ -54,6 +54,8 @@ void nf_queue_entry_release_refs(struct nf_queue_entry *entry) dev_put(state->in); if (state->out) dev_put(state->out); + if (state->sk) + sock_put(state->sk); #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER) if (entry->skb->nf_bridge) { struct nf_bridge_info *nf_bridge = entry->skb->nf_bridge; @@ -81,6 +83,8 @@ bool nf_queue_entry_get_refs(struct nf_queue_entry *entry) dev_hold(state->in); if (state->out) dev_hold(state->out); + if (state->sk) + sock_hold(state->sk); #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER) if (entry->skb->nf_bridge) { struct nf_bridge_info *nf_bridge = entry->skb->nf_bridge; |