Skip to contentSkip to conversation

asm prototypes for modversions on x86

PATCH In review Adam Borowski 2 participants 3 messages Dec 11, 2016 – Dec 13, 2016

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

v3 cover asm prototypes for modversions on x86

Hi!
After Linus' revert of Arnd's modversions patch, it looks like we're back to wanting asm-prototypes.h at least in the short term. Things are much better than before -- instead of failing to load modules there's just a scary warning, but I still believe that no scary warning is better :)

Users will be stressed, waste their time looking for answer, etc -- and the short-term fix is quite well researched and tested. It's for x86 only, but with arm ppc arm64 already dealt with, that handles about 99.9% of machines.

So I think it'd be good if you could apply this -- ideally for 4.9, if not then at least 4.10.

There _is_ a modification since the last posted version: Ben Hutchings pointed out that I missed one 486-only symbol. Not surprising no one found this during testing...

The diff from v2 is:
+#ifndef CONFIG_X86_CMPXCHG64
+extern void cmpxchg8b_emu(void);
+#endif

Note that this is already carried by Debian (Ben Hutchings' tree), so a mainline fix for 4.9 would matter only for other distributions, not sure which if any want to release with 4.9.

Meow!

Signature · 4 lines
u-boot problems can be solved with the help of your old SCSI manuals, the
parts that deal with goat termination.  You need a black-handled knife, and
an appropriate set of candles (number and color matters).  Or was it a
silver-handled knife?  Crap, need to look that up.
#1 lore raw

PATCH v3 1/1 x86/kbuild: enable modversions for symbols exported from asm

Commit 4efca4ed ("kbuild: modversions for EXPORT_SYMBOL() for asm") adds modversion support for symbols exported from asm files. Architectures must include C-style declarations for those symbols in asm/asm-prototypes.h in order for them to be versioned.

Add these declarations for x86, and an architecture-independent file that can be used for common symbols.

With f27c2f6 reverting 8ab2ae6 ("default exported asm symbols to zero") we produce a scary warning on x86, this commit fixes that.

---
 arch/x86/include/asm/asm-prototypes.h | 16 ++++++++++++++++
 include/asm-generic/asm-prototypes.h  |  7 +++++++
 2 files changed, 23 insertions(+)
 create mode 100644 arch/x86/include/asm/asm-prototypes.h
 create mode 100644 include/asm-generic/asm-prototypes.h
arch/x86/include/asm/asm-prototypes.h new file +16 -0
new file mode 100644
index 000000000000..44b8762fa0c7
@@ -0,0 +1,16 @@
+#include <asm/ftrace.h>
+#include <asm/uaccess.h>
+#include <asm/string.h>
+#include <asm/page.h>
+#include <asm/checksum.h>
+
+#include <asm-generic/asm-prototypes.h>
+
+#include <asm/page.h>
+#include <asm/pgtable.h>
+#include <asm/special_insns.h>
+#include <asm/preempt.h>
+
+#ifndef CONFIG_X86_CMPXCHG64
+extern void cmpxchg8b_emu(void);
+#endif
include/asm-generic/asm-prototypes.h new file +7 -0
new file mode 100644
index 000000000000..df13637e4017
@@ -0,0 +1,7 @@
+#include <linux/bitops.h>
+extern void *__memset(void *, int, __kernel_size_t);
+extern void *__memcpy(void *, const void *, __kernel_size_t);
+extern void *__memmove(void *, const void *, __kernel_size_t);
+extern void *memset(void *, int, __kernel_size_t);
+extern void *memcpy(void *, const void *, __kernel_size_t);
+extern void *memmove(void *, const void *, __kernel_size_t);
Signature · 1 line
2.11.0
#2 lore raw

Re: [PATCH v3 1/1] x86/kbuild: enable modversions for symbols exported from asm

Dne 11.12.2016 v 02:09 Adam Borowski napsal(a):

Quoted 8 lines

Commit 4efca4ed ("kbuild: modversions for EXPORT_SYMBOL() for asm") adds modversion support for symbols exported from asm files. Architectures must include C-style declarations for those symbols in asm/asm-prototypes.h in order for them to be versioned.

Add these declarations for x86, and an architecture-independent file that can be used for common symbols.

Quoted 8 lines

With f27c2f6 reverting 8ab2ae6 ("default exported asm symbols to zero") we produce a scary warning on x86, this commit fixes that.

Applied to kbuild.git#kbuild now.

Michal