Re: linux-next: build failure after merge of the net-next tree

From: Brian Vazquez
Date: Fri Aug 28 2020 - 19:16:53 EST


On Fri, Aug 28, 2020 at 8:12 AM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
>
> On 8/28/20 8:09 AM, Sven Joachim wrote:
> > On 2020-08-27 11:12 -0700, Brian Vazquez wrote:
> >
> >> I've been trying to reproduce it with your config but I didn't
> >> succeed. I also looked at the file after the preprocessor and it
> >> looked good:
> >>
> >> ret = ({ __builtin_expect(!!(ops->match == fib6_rule_match), 1) ?
> >> fib6_rule_match(rule, fl, flags) : ops->match(rule, fl, flags); })
> >
> > However, in my configuration I have CONFIG_IPV6=m, and so
> > fib6_rule_match is not available as a builtin. I think that's why ld is
> > complaining about the undefined reference.
>
> Same here FWIW. CONFIG_IPV6=m.

Oh I see,
I tried this and it seems to work fine for me, does this also fix your
problem? if so, I'll prepare the patch, and thanks for helping!
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index 51678a528f85..40dfd1f55899 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -16,7 +16,7 @@
#include <net/ip_tunnels.h>
#include <linux/indirect_call_wrapper.h>

-#ifdef CONFIG_IPV6_MULTIPLE_TABLES
+#if defined(CONFIG_IPV6_MULTIPLE_TABLES) && defined(CONFIG_IPV6)

>
>
> > Changing the configuration to CONFIG_IPV6=y helps, FWIW.
> >
> >> Note that fib4_rule_match doesn't appear as the
> >> CONFIG_IP_MULTIPLE_TABLES is not there.
> >>
> >> Could you share more details on how you're compiling it and what
> >> compiler you're using??
> >
> > Tried with both gcc 9 and gcc 10 under Debian unstable, binutils 2.35.
> > I usually use "make bindebpkg", but just running "make" is sufficient to
> > reproduce the problem, as it happens when linking vmlinux.
> >
> > Cheers,
> > Sven
> >
> >
> >> On Mon, Aug 24, 2020 at 1:08 AM Sven Joachim <svenjoac@xxxxxx> wrote:
> >>>
> >>> On 2020-08-22 08:16 +0200, Sven Joachim wrote:
> >>>
> >>>> On 2020-08-21 09:23 -0700, Brian Vazquez wrote:
> >>>>
> >>>>> Hi Sven,
> >>>>>
> >>>>> Sorry for the late reply, did you still see this after:
> >>>>> https://patchwork.ozlabs.org/project/netdev/patch/20200803131948.41736-1-yuehaibing@xxxxxxxxxx/
> >>>>> ??
> >>>>
> >>>> That patch is apparently already in 5.9-rc1 as commit 80fbbb1672e7, so
> >>>> yes I'm still seeing it.
> >>>
> >>> Still present in 5.9-rc2 as of today, I have attached my .config for
> >>> reference. Note that I have CONFIG_IPV6_MULTIPLE_TABLES=y, but
> >>> CONFIG_IP_MULTIPLE_TABLES is not mentioned at all there.
> >>>
> >>> To build the kernel, I have now deselected IPV6_MULTIPLE_TABLES. Not
> >>> sure why this was enabled in my .config which has grown organically over
> >>> many years.
> >>>
> >>> Cheers,
> >>> Sven
> >>>
> >>>
> >>>>> On Mon, Aug 17, 2020 at 12:21 AM Sven Joachim <svenjoac@xxxxxx> wrote:
> >>>>>
> >>>>>> On 2020-07-29 21:27 +1000, Stephen Rothwell wrote:
> >>>>>>
> >>>>>>> Hi all,
> >>>>>>>
> >>>>>>> After merging the net-next tree, today's linux-next build (i386
> >>>>>> defconfig)
> >>>>>>> failed like this:
> >>>>>>>
> >>>>>>> x86_64-linux-gnu-ld: net/core/fib_rules.o: in function
> >>>>>> `fib_rules_lookup':
> >>>>>>> fib_rules.c:(.text+0x5c6): undefined reference to `fib6_rule_match'
> >>>>>>> x86_64-linux-gnu-ld: fib_rules.c:(.text+0x5d8): undefined reference to
> >>>>>> `fib6_rule_match'
> >>>>>>> x86_64-linux-gnu-ld: fib_rules.c:(.text+0x64d): undefined reference to
> >>>>>> `fib6_rule_action'
> >>>>>>> x86_64-linux-gnu-ld: fib_rules.c:(.text+0x662): undefined reference to
> >>>>>> `fib6_rule_action'
> >>>>>>> x86_64-linux-gnu-ld: fib_rules.c:(.text+0x67a): undefined reference to
> >>>>>> `fib6_rule_suppress'
> >>>>>>> x86_64-linux-gnu-ld: fib_rules.c:(.text+0x68d): undefined reference to
> >>>>>> `fib6_rule_suppress'
> >>>>>>
> >>>>>> FWIW, I saw these errors in 5.9-rc1 today, so the fix in commit
> >>>>>> 41d707b7332f ("fib: fix fib_rules_ops indirect calls wrappers") was
> >>>>>> apparently not sufficient.
> >>>>>>
> >>>>>> ,----
> >>>>>> | $ grep IPV6 .config
> >>>>>> | CONFIG_IPV6=m
> >>>>>> | # CONFIG_IPV6_ROUTER_PREF is not set
> >>>>>> | # CONFIG_IPV6_OPTIMISTIC_DAD is not set
> >>>>>> | # CONFIG_IPV6_MIP6 is not set
> >>>>>> | # CONFIG_IPV6_ILA is not set
> >>>>>> | # CONFIG_IPV6_VTI is not set
> >>>>>> | CONFIG_IPV6_SIT=m
> >>>>>> | # CONFIG_IPV6_SIT_6RD is not set
> >>>>>> | CONFIG_IPV6_NDISC_NODETYPE=y
> >>>>>> | CONFIG_IPV6_TUNNEL=m
> >>>>>> | CONFIG_IPV6_MULTIPLE_TABLES=y
> >>>>>> | # CONFIG_IPV6_SUBTREES is not set
> >>>>>> | # CONFIG_IPV6_MROUTE is not set
> >>>>>> | # CONFIG_IPV6_SEG6_LWTUNNEL is not set
> >>>>>> | # CONFIG_IPV6_SEG6_HMAC is not set
> >>>>>> | # CONFIG_IPV6_RPL_LWTUNNEL is not set
> >>>>>> | # CONFIG_NF_SOCKET_IPV6 is not set
> >>>>>> | # CONFIG_NF_TPROXY_IPV6 is not set
> >>>>>> | # CONFIG_NF_DUP_IPV6 is not set
> >>>>>> | # CONFIG_NF_REJECT_IPV6 is not set
> >>>>>> | # CONFIG_NF_LOG_IPV6 is not set
> >>>>>> | CONFIG_NF_DEFRAG_IPV6=m
> >>>>>> `----
> >>>>>>
> >>>>>>> Caused by commit
> >>>>>>>
> >>>>>>> b9aaec8f0be5 ("fib: use indirect call wrappers in the most common
> >>>>>> fib_rules_ops")
> >>>>>>>
> >>>>>>> # CONFIG_IPV6_MULTIPLE_TABLES is not set
> >>>>>>>
> >>>>>>> I have reverted that commit for today.
> >>>>>>
> >>>>>> Cheers,
> >>>>>> Sven
>
>
> --
> ~Randy
>