Message ID | 20200511042149.1712876-1-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | kbuild: make module name conflict fatal error | expand |
Hi, On Mon, May 11, 2020 at 01:21:49PM +0900, Masahiro Yamada wrote: > I think all the warnings have been fixed by now. Make it a fatal error. > Not entirely. With this patch in the tree, I get: Building sparc64:allmodconfig ... failed -------------- Error log: error: the following would cause module name conflict: drivers/char/adi.ko drivers/input/joystick/adi.ko make[1]: *** [modules_check] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [__sub-make] Error 2 Reverting this patch fixes the problem. Guenter
On Sun, Jun 07, 2020 at 07:02:56PM -0700, Guenter Roeck wrote: > Hi, > > On Mon, May 11, 2020 at 01:21:49PM +0900, Masahiro Yamada wrote: > > I think all the warnings have been fixed by now. Make it a fatal error. > > > > Not entirely. With this patch in the tree, I get: > > Building sparc64:allmodconfig ... failed > -------------- > Error log: > error: the following would cause module name conflict: > drivers/char/adi.ko > drivers/input/joystick/adi.ko > make[1]: *** [modules_check] Error 1 > make[1]: *** Waiting for unfinished jobs.... > make: *** [__sub-make] Error 2 > > Reverting this patch fixes the problem. As it doesn't look like either of these drivers can be "auto-loaded" based on hardware detection, I don't know what to suggest as for renaming either of them. Any ideas? thanks, greg k-h
On Tue, Jun 9, 2020 at 8:20 AM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Sun, Jun 07, 2020 at 07:02:56PM -0700, Guenter Roeck wrote: > > Hi, > > > > On Mon, May 11, 2020 at 01:21:49PM +0900, Masahiro Yamada wrote: > > > I think all the warnings have been fixed by now. Make it a fatal error. > > > > > > > Not entirely. With this patch in the tree, I get: > > > > Building sparc64:allmodconfig ... failed > > -------------- > > Error log: > > error: the following would cause module name conflict: > > drivers/char/adi.ko > > drivers/input/joystick/adi.ko > > make[1]: *** [modules_check] Error 1 > > make[1]: *** Waiting for unfinished jobs.... > > make: *** [__sub-make] Error 2 > > > > Reverting this patch fixes the problem. > > As it doesn't look like either of these drivers can be "auto-loaded" > based on hardware detection, I don't know what to suggest as for > renaming either of them. > > Any ideas? I see zero chance of a kernel actually needing to provide both drivers, given that the hardware is 20 years apart and gameports are almost exclusive to x86 PCs. How about an ugly hack: diff --git a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig index 940b744639c7..6f73f02059b5 100644 --- a/drivers/input/joystick/Kconfig +++ b/drivers/input/joystick/Kconfig @@ -45,6 +45,7 @@ config JOYSTICK_A3D config JOYSTICK_ADI tristate "Logitech ADI digital joysticks and gamepads" select GAMEPORT + depends on ADI!=m # avoid module name conflict help Say Y here if you have a Logitech controller using the ADI protocol over the PC gameport. Arnd
On Tue, Jun 09, 2020 at 09:51:46AM +0200, Arnd Bergmann wrote: > On Tue, Jun 9, 2020 at 8:20 AM Greg Kroah-Hartman > <gregkh@linuxfoundation.org> wrote: > > > > On Sun, Jun 07, 2020 at 07:02:56PM -0700, Guenter Roeck wrote: > > > Hi, > > > > > > On Mon, May 11, 2020 at 01:21:49PM +0900, Masahiro Yamada wrote: > > > > I think all the warnings have been fixed by now. Make it a fatal error. > > > > > > > > > > Not entirely. With this patch in the tree, I get: > > > > > > Building sparc64:allmodconfig ... failed > > > -------------- > > > Error log: > > > error: the following would cause module name conflict: > > > drivers/char/adi.ko > > > drivers/input/joystick/adi.ko > > > make[1]: *** [modules_check] Error 1 > > > make[1]: *** Waiting for unfinished jobs.... > > > make: *** [__sub-make] Error 2 > > > > > > Reverting this patch fixes the problem. > > > > As it doesn't look like either of these drivers can be "auto-loaded" > > based on hardware detection, I don't know what to suggest as for > > renaming either of them. > > > > Any ideas? > > I see zero chance of a kernel actually needing to provide both drivers, > given that the hardware is 20 years apart and gameports are almost > exclusive to x86 PCs. How about an ugly hack: > > diff --git a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig > index 940b744639c7..6f73f02059b5 100644 > --- a/drivers/input/joystick/Kconfig > +++ b/drivers/input/joystick/Kconfig > @@ -45,6 +45,7 @@ config JOYSTICK_A3D > config JOYSTICK_ADI > tristate "Logitech ADI digital joysticks and gamepads" > select GAMEPORT > + depends on ADI!=m # avoid module name conflict > help > Say Y here if you have a Logitech controller using the ADI > protocol over the PC gameport. > > Arnd Looks sane to me, thanks! greg k-h
On Tue, Jun 9, 2020 at 4:52 PM Arnd Bergmann <arnd@arndb.de> wrote: > > On Tue, Jun 9, 2020 at 8:20 AM Greg Kroah-Hartman > <gregkh@linuxfoundation.org> wrote: > > > > On Sun, Jun 07, 2020 at 07:02:56PM -0700, Guenter Roeck wrote: > > > Hi, > > > > > > On Mon, May 11, 2020 at 01:21:49PM +0900, Masahiro Yamada wrote: > > > > I think all the warnings have been fixed by now. Make it a fatal error. > > > > > > > > > > Not entirely. With this patch in the tree, I get: > > > > > > Building sparc64:allmodconfig ... failed > > > -------------- > > > Error log: > > > error: the following would cause module name conflict: > > > drivers/char/adi.ko > > > drivers/input/joystick/adi.ko > > > make[1]: *** [modules_check] Error 1 > > > make[1]: *** Waiting for unfinished jobs.... > > > make: *** [__sub-make] Error 2 > > > > > > Reverting this patch fixes the problem. > > > > As it doesn't look like either of these drivers can be "auto-loaded" > > based on hardware detection, I don't know what to suggest as for > > renaming either of them. > > > > Any ideas? > > I see zero chance of a kernel actually needing to provide both drivers, > given that the hardware is 20 years apart and gameports are almost > exclusive to x86 PCs. How about an ugly hack: > > diff --git a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig > index 940b744639c7..6f73f02059b5 100644 > --- a/drivers/input/joystick/Kconfig > +++ b/drivers/input/joystick/Kconfig > @@ -45,6 +45,7 @@ config JOYSTICK_A3D > config JOYSTICK_ADI > tristate "Logitech ADI digital joysticks and gamepads" > select GAMEPORT > + depends on ADI!=m # avoid module name conflict > help > Say Y here if you have a Logitech controller using the ADI > protocol over the PC gameport. > > Arnd I am OK with this. Thank you.
diff --git a/Makefile b/Makefile index 1162cb04860c..a2e4d0945500 100644 --- a/Makefile +++ b/Makefile @@ -1328,9 +1328,12 @@ all: modules # using awk while concatenating to the final file. PHONY += modules -modules: $(if $(KBUILD_BUILTIN),vmlinux) modules.order +modules: $(if $(KBUILD_BUILTIN),vmlinux) modules_check $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh + +PHONY += modules_check +modules_check: modules.order + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh $< modules.order: descend $(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(build-dirs)) > $@ diff --git a/scripts/modules-check.sh b/scripts/modules-check.sh index f51f446707b8..43de226071ae 100755 --- a/scripts/modules-check.sh +++ b/scripts/modules-check.sh @@ -3,14 +3,24 @@ set -e +if [ $# != 1 ]; then + echo "Usage: $0 <modules.order>" >& 2 + exit 1 +fi + +exit_code=0 + # Check uniqueness of module names check_same_name_modules() { - for m in $(sed 's:.*/::' modules.order | sort | uniq -d) + for m in $(sed 's:.*/::' $1 | sort | uniq -d) do - echo "warning: same module names found:" >&2 + echo "error: the following would cause module name conflict:" >&2 sed -n "/\/$m/s:^: :p" modules.order >&2 + exit_code=1 done } -check_same_name_modules +check_same_name_modules "$1" + +exit $exit_code
I think all the warnings have been fixed by now. Make it a fatal error. Check it before modpost because we need to stop building *.ko files. Also, pass modules.order via a script parameter. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- Makefile | 7 +++++-- scripts/modules-check.sh | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-)