From: Phil Sutter <phil@nwl.cc>
To: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Florian Westphal <fw@strlen.de>,
netfilter-devel@vger.kernel.org, Eric Garver <e@erig.me>
Subject: Re: [nf-next PATCH v6 0/7] Dynamic hook interface binding part 1
Date: Tue, 19 Nov 2024 17:09:17 +0100 [thread overview]
Message-ID: <Zzy4LTNe4a4bepmX@orbyte.nwl.cc> (raw)
In-Reply-To: <Zzc3FV4FG8a6px7z@calendula>
Hi Pablo,
On Fri, Nov 15, 2024 at 12:57:09PM +0100, Pablo Neira Ayuso wrote:
> Sorry for slowness.
No worries!
> On Wed, Oct 23, 2024 at 04:57:23PM +0200, Phil Sutter wrote:
> > Changes since v5:
> > - Extract the initial set of patches making netdev hooks name-based as
> > suggested by Florian.
> > - Drop Fixes: tag from patch 1: It is not correct (the pointless check
> > existed before that commit already) and it is rather an optimization
> > than fixing a bug.
> >
> > This series makes netdev hooks store the interface name spec they were
> > created for and establishes this stored name as the key identifier. The
> > previous one which is the hook's 'ops.dev' pointer is thereby freed to
> > vanish, so a vanishing netdev no longer has to drag the hook along with
> > it. (Patches 2-4)
> >
> > Furthermore, it aligns behaviour of netdev-family chains with that of
> > flowtables in situations of vanishing interfaces. When previously a
> > chain losing its last interface was torn down and deleted, it may now
> > remain in place (albeit with no remaining interfaces). (Patch 5)
> >
> > Patch 6 is a cleanup following patch 5, patches 1 and 7 are independent
> > code simplifications.
>
> Patch 1-4 can be integrated, they are relatively small.
>
> Patches 5-6 will need a rebase due to my fix in that path.
>
> Patch 7 is probably uncovering an issue with flowtable hardware
> offload support, because I suspect _UNBIND is not called from that
> path, I need to have a look.
Checking callers of nft_unregister_flowtable_net_hooks():
nf_tables_commit() calls it for DELFLOWTABLE, code-paths differ for
flowtable updates or complete deletions: With the latter,
nft_commit_release() calls nf_tables_flowtable_destroy() which does the
UNBIND. So if deleting individual interfaces from an offloaded flowtable
is supported, we may miss the UNBIND there.
__nf_tables_abort() calls it for NEWFLOWTABLE. The hooks should have
been bound by nf_tables_newflowtable() (or nft_flowtable_update(),
respectively) so this seems like missing UNBIND there.
Now about __nft_release_hook, I see:
nf_tables_pre_exit_net
-> __nft_release_hooks
-> __nft_release_hook
Do we have to UNBIND at netns exit?
There is also:
nft_rcv_nl_event
-> __nft_release_hook
I don't see where hooks of flowtables in owner flag tables are unbound.
> I am inclined to postpone this batch to the next development cycle.
FWIW, the bugs are older than my trivial function elimination. But
indeed, the above needs more attention than the new feature.
Cheers, Phil
next prev parent reply other threads:[~2024-11-19 16:09 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-23 14:57 [nf-next PATCH v6 0/7] Dynamic hook interface binding part 1 Phil Sutter
2024-10-23 14:57 ` [nf-next PATCH v6 1/7] netfilter: nf_tables: Flowtable hook's pf value never varies Phil Sutter
2024-10-23 14:57 ` [nf-next PATCH v6 2/7] netfilter: nf_tables: Store user-defined hook ifname Phil Sutter
2024-10-23 14:57 ` [nf-next PATCH v6 3/7] netfilter: nf_tables: Use stored ifname in netdev hook dumps Phil Sutter
2024-10-23 14:57 ` [nf-next PATCH v6 4/7] netfilter: nf_tables: Compare netdev hooks based on stored name Phil Sutter
2024-10-23 14:57 ` [nf-next PATCH v6 5/7] netfilter: nf_tables: Tolerate chains with no remaining hooks Phil Sutter
2024-10-23 14:57 ` [nf-next PATCH v6 6/7] netfilter: nf_tables: Simplify chain netdev notifier Phil Sutter
2024-10-23 14:57 ` [nf-next PATCH v6 7/7] netfilter: nf_tables: Drop __nft_unregister_flowtable_net_hooks() Phil Sutter
2024-11-15 11:57 ` [nf-next PATCH v6 0/7] Dynamic hook interface binding part 1 Pablo Neira Ayuso
2024-11-19 16:09 ` Phil Sutter [this message]
2024-11-21 17:04 ` Phil Sutter
2024-11-22 13:39 ` Pablo Neira Ayuso
2024-11-22 18:18 ` Phil Sutter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zzy4LTNe4a4bepmX@orbyte.nwl.cc \
--to=phil@nwl.cc \
--cc=e@erig.me \
--cc=fw@strlen.de \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox