arm64: string: use asm EXPORT_SYMBOL()
authorMark Rutland <mark.rutland@arm.com>
Fri, 7 Dec 2018 18:08:21 +0000 (18:08 +0000)
committerWill Deacon <will.deacon@arm.com>
Mon, 10 Dec 2018 11:50:12 +0000 (11:50 +0000)
For a while now it's been possible to use EXPORT_SYMBOL() in assembly
files, which allows us to place exports immediately after assembly
functions, as we do for C functions.

As a step towards removing arm64ksyms.c, let's move the string routine
exports to the assembly files the functions are defined in. Routines
which should only be exported for !KASAN builds are exported using the
EXPORT_SYMBOL_NOKASAN() helper.

There should be no functional change as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
12 files changed:
arch/arm64/kernel/arm64ksyms.c
arch/arm64/lib/memchr.S
arch/arm64/lib/memcmp.S
arch/arm64/lib/memcpy.S
arch/arm64/lib/memmove.S
arch/arm64/lib/memset.S
arch/arm64/lib/strchr.S
arch/arm64/lib/strcmp.S
arch/arm64/lib/strlen.S
arch/arm64/lib/strncmp.S
arch/arm64/lib/strnlen.S
arch/arm64/lib/strrchr.S

index 02019667e3194ecf820330a71e07d81b25de7bbb..c142103bc0fe9027351fcac4d00fcfc70575c238 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <linux/export.h>
 #include <linux/sched.h>
-#include <linux/string.h>
 #include <linux/cryptohash.h>
 #include <linux/delay.h>
 #include <linux/in6.h>
 
 #include <asm/checksum.h>
 
-       /* string / mem functions */
-#ifndef CONFIG_KASAN
-EXPORT_SYMBOL(strchr);
-EXPORT_SYMBOL(strrchr);
-EXPORT_SYMBOL(strcmp);
-EXPORT_SYMBOL(strncmp);
-EXPORT_SYMBOL(strlen);
-EXPORT_SYMBOL(strnlen);
-EXPORT_SYMBOL(memcmp);
-EXPORT_SYMBOL(memchr);
-#endif
-
-EXPORT_SYMBOL(memset);
-EXPORT_SYMBOL(memcpy);
-EXPORT_SYMBOL(memmove);
-EXPORT_SYMBOL(__memset);
-EXPORT_SYMBOL(__memcpy);
-EXPORT_SYMBOL(__memmove);
-
 #ifdef CONFIG_FUNCTION_TRACER
 EXPORT_SYMBOL(_mcount);
 NOKPROBE_SYMBOL(_mcount);
index 0f164a4baf52a16dfc0fd9232b6b797a06e2a314..f146b7ecd28f597534294d263f2e9909d39d4220 100644 (file)
@@ -42,3 +42,4 @@ WEAK(memchr)
 2:     mov     x0, #0
        ret
 ENDPIPROC(memchr)
+EXPORT_SYMBOL_NOKASAN(memchr)
index fb295f52e9f8771aed4e2bc52db70dd4a55b51c6..e2e629b090496a857d564318ae959b8d7e6b8e3a 100644 (file)
@@ -256,3 +256,4 @@ CPU_LE( rev data2, data2 )
        mov     result, #0
        ret
 ENDPIPROC(memcmp)
+EXPORT_SYMBOL_NOKASAN(memcmp)
index 67613937711f10d209b3be73ce6a322f674581b5..b4f82888ed6047252f1a2c4c8e256ea5821a18b5 100644 (file)
@@ -74,4 +74,6 @@ ENTRY(memcpy)
 #include "copy_template.S"
        ret
 ENDPIPROC(memcpy)
+EXPORT_SYMBOL(memcpy)
 ENDPROC(__memcpy)
+EXPORT_SYMBOL(__memcpy)
index a5a4459013b1a59d5a54b2a70fd1ad8e0f256fd9..ef12f719d99d55223e909729c456ccba1051a91e 100644 (file)
@@ -197,4 +197,6 @@ ENTRY(memmove)
        b.ne    .Ltail63
        ret
 ENDPIPROC(memmove)
+EXPORT_SYMBOL(memmove)
 ENDPROC(__memmove)
+EXPORT_SYMBOL(__memmove)
index f2670a9f218c919ff68a1ffcfdbce468e693ae60..a79cf118d6d0eca0223fabec47b50a22e536de2e 100644 (file)
@@ -216,4 +216,6 @@ ENTRY(memset)
        b.ne    .Ltail_maybe_long
        ret
 ENDPIPROC(memset)
+EXPORT_SYMBOL(memset)
 ENDPROC(__memset)
+EXPORT_SYMBOL(__memset)
index 7c83091d1bcdd2c67c03d2af8e69264858985c09..b179421f46c742f46c7f57d140fde0b4ce38c0a7 100644 (file)
@@ -40,3 +40,4 @@ WEAK(strchr)
        csel    x0, x0, xzr, eq
        ret
 ENDPROC(strchr)
+EXPORT_SYMBOL_NOKASAN(strchr)
index 7d5d15398bfbc6260e61d369f5246e17be5422fa..c306c7b8857460c227ba9778768e9c5e6ce4e03b 100644 (file)
@@ -232,3 +232,4 @@ CPU_BE(     orr     syndrome, diff, has_nul )
        sub     result, data1, data2, lsr #56
        ret
 ENDPIPROC(strcmp)
+EXPORT_SYMBOL_NOKASAN(strcmp)
index 8e0b14205dcb419e5752209294922ddff072bd52..2a02409374169a9e37fd45d58951ab358f2e2880 100644 (file)
@@ -124,3 +124,4 @@ CPU_LE( lsr tmp2, tmp2, tmp1 )      /* Shift (tmp1 & 63).  */
        csel    data2, data2, data2a, le
        b       .Lrealigned
 ENDPIPROC(strlen)
+EXPORT_SYMBOL_NOKASAN(strlen)
index 66bd145935d9ed0abaababc2d8f12beecc1a2875..c5d567afb03994d86687e2e52c612f106c991097 100644 (file)
@@ -308,3 +308,4 @@ CPU_BE( orr syndrome, diff, has_nul )
        mov     result, #0
        ret
 ENDPIPROC(strncmp)
+EXPORT_SYMBOL_NOKASAN(strncmp)
index 355be04441fe60f949978d6b80778a3812672f3c..e21e536d420e96e110d0c03512f27b6752a91ee5 100644 (file)
@@ -169,3 +169,4 @@ CPU_LE( lsr tmp2, tmp2, tmp4 )      /* Shift (tmp1 & 63).  */
        mov     len, limit
        ret
 ENDPIPROC(strnlen)
+EXPORT_SYMBOL_NOKASAN(strnlen)
index ea84924d599019c1dd4f6d196c47f60328dd4118..47e1593016dc9a007e95b03d6927bfc874c8f947 100644 (file)
@@ -41,3 +41,4 @@ WEAK(strrchr)
 2:     mov     x0, x3
        ret
 ENDPIPROC(strrchr)
+EXPORT_SYMBOL_NOKASAN(strrchr)