From: Fernando Fernandez Mancera <fmancera@suse.de>
To: Ido Schimmel <idosch@nvidia.com>
Cc: netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, horms@kernel.org,
dsahern@kernel.org, rbm@suse.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 00/11 net-next v4] Convert CONFIG_IPV6 to built-in and remove stubs
Date: Mon, 23 Mar 2026 13:19:56 +0100 [thread overview]
Message-ID: <8c136575-e23e-4cc2-a455-f1ba1abde2d5@suse.de> (raw)
In-Reply-To: <20260322172702.GA121169@shredder>
On 3/22/26 6:27 PM, Ido Schimmel wrote:
> On Fri, Mar 20, 2026 at 07:55:52PM +0100, Fernando Fernandez Mancera wrote:
>> Changes:
>> v4:
>> Patch 2: new patch introduced on this revision
>> Patch 3: drop some IS_BUILTIN(IPV6) on files compiled only when IPV6=y
>> Patch 5: introduce ipv6_mod_enabled() checks on fib6_nh_init(), ip6_dst_lookup_flow() and ip6_fragment() to avoid crash when ipv6.disable=1 during boot
>> Patch 6: use &nd_tbl on code guarded by IS_ENABLED(CONFIG_IPV6)
>
> The IPv6 code is still using ipv6_get_nd_tbl() for some reason. If you
> remove it from there (it's not needed), then we are only left with
> handful of users that can be converted to use '&nd_tbl' when IPv6 is
> enabled. Something like the patch below.
>
Hi Ido, the main reason why ipv6_get_nd_tbl() is used on IPv6 code is
due to inlined functions. __ipv6_neigh_lookup_noref() is used in several
places not guarded by IS_ENABLED(CONFIG_IPV6) preprocessor directive.
That leads to undefined references when compiling with CONFIG_IPV6=n.
ld: vmlinux.o: in function `bpf_ipv4_fib_lookup':
filter.c:(.text+0x322b9dc): undefined reference to `nd_tbl'
ld: filter.c:(.text+0x322b9fb): undefined reference to `nd_tbl'
ld: filter.c:(.text+0x322ce1a): undefined reference to `nd_tbl'
ld: vmlinux.o: in function `ipv4_confirm_neigh':
route.c:(.text+0x345ade7): undefined reference to `nd_tbl'
ld: route.c:(.text+0x345ae06): undefined reference to `nd_tbl'
ld: vmlinux.o:route.c:(.text+0x345b74f): more undefined references to
`nd_tbl' follow
I think that using ipv6_get_nd_tbl() is cleaner than guarding the usage
of nd_tbl inside the function itself. In addition, I do not think we
need to guard every __ipv6_neigh_lookup_noref_stub() instance we are
dropping/replacing because that code should never be reached with
ipv6.disabled=1 or CONFIG_IPV6=n, otherwise it would crash. That means
it should be safe to use ipv6_get_nd_tbl() there.
What do you think Ido? I can still drop ipv6_get_nd_tbl() but it will
require some IS_ENABLED(IPV6) preprocessor checks.
Thanks,
Fernando
next prev parent reply other threads:[~2026-03-23 12:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-20 18:55 [PATCH 00/11 net-next v4] Convert CONFIG_IPV6 to built-in and remove stubs Fernando Fernandez Mancera
2026-03-20 18:55 ` [PATCH 01/11 net-next v4] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs Fernando Fernandez Mancera
2026-03-20 18:55 ` [PATCH 02/11 net-next v4] net: remove EXPORT_IPV6_MOD() and EXPORT_IPV6_MOD_GPL() macros Fernando Fernandez Mancera
2026-03-20 18:55 ` [PATCH 03/11 net-next v4] ipv6: replace IS_BUILTIN(CONFIG_IPV6) with IS_ENABLED(CONFIG_IPV6) Fernando Fernandez Mancera
2026-03-23 20:11 ` Ido Schimmel
2026-03-24 8:47 ` Ido Schimmel
2026-03-20 18:55 ` [PATCH 04/11 net-next v4] ipv6: remove dynamic ICMPv6 sender registration infrastructure Fernando Fernandez Mancera
2026-03-20 18:55 ` [PATCH 05/11 net-next v4] ipv6: prepare headers for ipv6_stub removal Fernando Fernandez Mancera
2026-03-24 8:22 ` Ido Schimmel
2026-03-24 11:25 ` Fernando Fernandez Mancera
2026-03-20 18:56 ` [PATCH 06/11 net-next v4] drivers: net: drop ipv6_stub usage and use direct function calls Fernando Fernandez Mancera
2026-03-20 18:56 ` [PATCH 07/11 net-next v4] ipv4: " Fernando Fernandez Mancera
2026-03-20 18:56 ` [PATCH 08/11 net-next v4] net: convert remaining ipv6_stub users to " Fernando Fernandez Mancera
2026-03-20 18:56 ` [PATCH 09/11 net-next v4] bpf: remove ipv6_bpf_stub completely and use " Fernando Fernandez Mancera
2026-03-20 18:56 ` [PATCH 10/11 net-next v4] ipv6: remove ipv6_stub infrastructure completely Fernando Fernandez Mancera
2026-03-20 18:56 ` [PATCH 11/11 net-next v4] netfilter: remove nf_ipv6_ops and use direct function calls Fernando Fernandez Mancera
2026-03-22 0:03 ` [PATCH 00/11 net-next v4] Convert CONFIG_IPV6 to built-in and remove stubs Jakub Kicinski
2026-03-23 12:32 ` Fernando Fernandez Mancera
2026-03-23 17:39 ` Jakub Kicinski
2026-03-22 17:27 ` Ido Schimmel
2026-03-23 12:19 ` Fernando Fernandez Mancera [this message]
2026-03-23 14:38 ` David Ahern
2026-03-23 15:06 ` Fernando Fernandez Mancera
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=8c136575-e23e-4cc2-a455-f1ba1abde2d5@suse.de \
--to=fmancera@suse.de \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=rbm@suse.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.