Re: [PATCH v2] kbuild: check uniqueness of module names

From: Masahiro Yamada
Date: Fri May 17 2019 - 12:25:09 EST


On Fri, May 17, 2019 at 2:46 PM Lucas De Marchi
<lucas.de.marchi@xxxxxxxxx> wrote:
>
> On Thu, May 16, 2019 at 10:37 PM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Fri, May 17, 2019 at 01:45:11PM +0900, Masahiro Yamada wrote:
> > > On Fri, May 17, 2019 at 1:29 PM Masahiro Yamada
> > > <yamada.masahiro@xxxxxxxxxxxxx> wrote:
> > > >
> > > > In the recent build test of linux-next, Stephen saw a build error
> > > > caused by a broken .tmp_versions/*.mod file:
> > > >
> > > > https://lkml.org/lkml/2019/5/13/991
> > > >
> > > > drivers/net/phy/asix.ko and drivers/net/usb/asix.ko have the same
> > > > basename, and there is a race in generating .tmp_versions/asix.mod
> > > >
> > > > Kbuild has not checked this before, and it suddenly shows up with
> > > > obscure error message when this kind of race occurs.
> > > >
> > > > Non-unique module names cause various sort of problems, but it is
> > > > not trivial to catch them by eyes.
> > > >
> > > > Hence, this script.
> > > >
> > > > It checks not only real modules, but also built-in modules (i.e.
> > > > controlled by tristate CONFIG option, but currently compiled with =y).
> > > > Non-unique names for built-in modules also cause problems because
> > > > /sys/modules/ would fall over.
> > > >
> > > > I tested allmodconfig on the latest kernel, and it detected the
> > > > following:
> > > >
> > > > warning: same basename if the following are built as modules:
> > > > drivers/regulator/88pm800.ko
> > > > drivers/mfd/88pm800.ko
> > > > warning: same basename if the following are built as modules:
> > > > drivers/gpu/drm/bridge/adv7511/adv7511.ko
> > > > drivers/media/i2c/adv7511.ko
> > > > warning: same basename if the following are built as modules:
> > > > drivers/net/phy/asix.ko
> > > > drivers/net/usb/asix.ko
> > > > warning: same basename if the following are built as modules:
> > > > fs/coda/coda.ko
> > > > drivers/media/platform/coda/coda.ko
> > > > warning: same basename if the following are built as modules:
> > > > drivers/net/phy/realtek.ko
> > > > drivers/net/dsa/realtek.ko
> > > >
> > > > Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> > > > Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>
> > > > Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>
> > > > ---
> > >
> > >
> > > One more question popped up.
> > >
> > > External modules are out of scope of the community,
> > > but it is possible that people create an external module
> > > that happens to have the same name as an upstream driver.
> >
> > That is their bug, nothing we can do about that :)
>
> It's actually not a bug. For external modules it works pretty much as
> intended. See DEPMOD.D(5): the search directive tells what's the
> preference among the directories for modules with the same name.
> depmod respects that order and put the right one into your
> modules.dep.
>
> This allows to put external modules in a different dir and also to
> make backports of modules from recent to ancient kernels. These
> modules with the same name are usually the same module, with a
> different version. Of course what we have here and you are fixing is a
> different story.

OK, so external modules should not be checked.

Thanks for the explanation!


> Reviewed-by: Lucas De Marchi <lucas.demarchi@xxxxxxxxx>
>
>
> Lucas De Marchi



--
Best Regards
Masahiro Yamada