Re: [PATCH] sh: add missing EXPORT_SYMBOL() for __delay

From: Rich Felker
Date: Wed Jul 22 2020 - 18:52:45 EST


On Tue, Jul 21, 2020 at 07:38:40PM -0700, Guenter Roeck wrote:
> On Thu, Dec 12, 2019 at 11:38:43AM +0900, Kuninori Morimoto wrote:
> > From: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>
> >
> > __delay() is used from kernel module.
> > We need EXPORT_SYMBOL(), otherwise we will get compile error.
> >
> > ERROR: "__delay" [drivers/net/phy/mdio-cavium.ko] undefined!
> >
> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>
>
> I must admit that this patch completely baffles me. __delay was
> already exported, only elsewhere in the file. With this patch
> in place, it is exported twice, and all sh builds in -next fail
> with
>
> In file included from include/linux/linkage.h:7,
> from arch/sh/include/asm/bug.h:5,
> from include/linux/bug.h:5,
> from include/linux/thread_info.h:12,
> from include/asm-generic/current.h:5,
> from ./arch/sh/include/generated/asm/current.h:1,
> from include/linux/sched.h:12,
> from arch/sh/lib/delay.c:8:
> include/linux/export.h:67:36: error: redefinition of '__ksymtab___delay'
>
> Guenter
>
> > ---
> > arch/sh/lib/delay.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/arch/sh/lib/delay.c b/arch/sh/lib/delay.c
> > index dad8e6a..540e670 100644
> > --- a/arch/sh/lib/delay.c
> > +++ b/arch/sh/lib/delay.c
> > @@ -29,6 +29,7 @@ void __delay(unsigned long loops)
> > : "0" (loops)
> > : "t");
> > }
> > +EXPORT_SYMBOL(__delay);
> >
> > inline void __const_udelay(unsigned long xloops)
> > {

I presently have a revert of this commit in queue for next. If it's
sufficiently breaking (and especially if there are other regressions
that need to be fixed, see the pmd_free thing) I could try to get it
in for 5.8 still but that's getting a bit late.

Rich