Commit faaae2a5 authored by Linus Torvalds's avatar Linus Torvalds

Re-enable CONFIG_MODVERSIONS in a slightly weaker form

This enables CONFIG_MODVERSIONS again, but allows for missing symbol CRC
information in order to work around the issue that newer binutils
versions seem to occasionally drop the CRC on the floor.  binutils 2.26
seems to work fine, while binutils 2.27 seems to break MODVERSIONS of
symbols that have been defined in assembler files.

[ We've had random missing CRC's before - it may be an old problem that
  just is now reliably triggered with the weak asm symbols and a new
  version of binutils ]

Some day I really do want to remove MODVERSIONS entirely.  Sadly, today
does not appear to be that day: Debian people apparently do want the
option to enable MODVERSIONS to make it easier to have external modules
across kernel versions, and this seems to be a fairly minimal fix for
the annoying problem.

Cc: Ben Hutchings <ben@decadent.org.uk>
Acked-by: default avatarMichal Marek <mmarek@suse.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 22d3d4fb
...@@ -1945,7 +1945,6 @@ config MODULE_FORCE_UNLOAD ...@@ -1945,7 +1945,6 @@ config MODULE_FORCE_UNLOAD
config MODVERSIONS config MODVERSIONS
bool "Module versioning support" bool "Module versioning support"
depends on BROKEN
help help
Usually, you have to use modules compiled with your kernel. Usually, you have to use modules compiled with your kernel.
Saying Y here makes it sometimes possible to use modules Saying Y here makes it sometimes possible to use modules
......
...@@ -1301,8 +1301,9 @@ static int check_version(Elf_Shdr *sechdrs, ...@@ -1301,8 +1301,9 @@ static int check_version(Elf_Shdr *sechdrs,
goto bad_version; goto bad_version;
} }
pr_warn("%s: no symbol version for %s\n", mod->name, symname); /* Broken toolchain. Warn once, then let it go.. */
return 0; pr_warn_once("%s: no symbol version for %s\n", mod->name, symname);
return 1;
bad_version: bad_version:
pr_warn("%s: disagrees about version of symbol %s\n", pr_warn("%s: disagrees about version of symbol %s\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment