summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2020-03-27 03:24:47 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2020-03-29 16:28:29 +0200
commit119e52e664c57d5f7c0174dc2b3a296b1e40591d (patch)
tree0bc01f1eb953ba286960e574325963061e01aa55 /include/net
parentnetfilter: nf_queue: make nf_queue_entry_release_refs static (diff)
downloadlinux-119e52e664c57d5f7c0174dc2b3a296b1e40591d.tar.xz
linux-119e52e664c57d5f7c0174dc2b3a296b1e40591d.zip
netfilter: nf_queue: place bridge physports into queue_entry struct
The refcount is done via entry->skb, which does work fine. Major problem: When putting the refcount of the bridge ports, we must always put the references while the skb is still around. However, we will need to put the references after okfn() to avoid a possible 1 -> 0 -> 1 refcount transition, so we cannot use the skb pointer anymore. Place the physports in the queue entry structure instead to allow for refcounting changes in the next patch. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/netfilter/nf_queue.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h
index cdbd98730852..e770bba00066 100644
--- a/include/net/netfilter/nf_queue.h
+++ b/include/net/netfilter/nf_queue.h
@@ -14,7 +14,10 @@ struct nf_queue_entry {
struct sk_buff *skb;
unsigned int id;
unsigned int hook_index; /* index in hook_entries->hook[] */
-
+#if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
+ struct net_device *physin;
+ struct net_device *physout;
+#endif
struct nf_hook_state state;
u16 size; /* sizeof(entry) + saved route keys */