mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 22:06:45 +07:00
b668970e61
kernelci.org reports tons of build warnings for linux-next:
35 WARNING: "memcpy" [fs/fat/msdos.ko] has no CRC!
35 WARNING: "__copy_user" [fs/fat/fat.ko] has no CRC!
32 WARNING: EXPORT symbol "memset" [vmlinux] version generation failed, symbol will not be versioned.
32 WARNING: EXPORT symbol "copy_page" [vmlinux] version generation failed, symbol will not be versioned.
32 WARNING: EXPORT symbol "clear_page" [vmlinux] version generation failed, symbol will not be versioned.
32 WARNING: EXPORT symbol "__strncpy_from_user_nocheck_asm" [vmlinux] version generation failed, symbol will not be versioned.
The problem here is mainly the missing asm/asm-prototypes.h header file
that is supposed to include the prototypes for each symbol that is exported
from an assembler file.
A second problem is that the asm/uaccess.h header contains some but not
all the necessary declarations for the user access helpers.
Finally, the vdso build is broken once we add asm/asm-prototypes.h, so
we have to fix this at the same time by changing the vdso header. My
approach here is to just not look for exported symbols in the VDSO
assembler files, as the symbols cannot be exported anyway.
Fixes: 576a2f0c5c
("MIPS: Export memcpy & memset functions alongside their definitions")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: Maciej W. Rozycki <macro@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/15038/
Patchwork: https://patchwork.linux-mips.org/patch/15069/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
92 lines
2.1 KiB
ArmAsm
92 lines
2.1 KiB
ArmAsm
/*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Copyright (C) 1996, 1999 by Ralf Baechle
|
|
* Copyright (C) 2011 MIPS Technologies, Inc.
|
|
*/
|
|
#include <linux/errno.h>
|
|
#include <asm/asm.h>
|
|
#include <asm/asm-offsets.h>
|
|
#include <asm/export.h>
|
|
#include <asm/regdef.h>
|
|
|
|
#define EX(insn,reg,addr,handler) \
|
|
9: insn reg, addr; \
|
|
.section __ex_table,"a"; \
|
|
PTR 9b, handler; \
|
|
.previous
|
|
|
|
/*
|
|
* Returns: -EFAULT if exception before terminator, N if the entire
|
|
* buffer filled, else strlen.
|
|
*/
|
|
|
|
/*
|
|
* Ugly special case have to check: we might get passed a user space
|
|
* pointer which wraps into the kernel space. We don't deal with that. If
|
|
* it happens at most some bytes of the exceptions handlers will be copied.
|
|
*/
|
|
|
|
.macro __BUILD_STRNCPY_ASM func
|
|
LEAF(__strncpy_from_\func\()_asm)
|
|
LONG_L v0, TI_ADDR_LIMIT($28) # pointer ok?
|
|
and v0, a1
|
|
bnez v0, .Lfault\@
|
|
|
|
FEXPORT(__strncpy_from_\func\()_nocheck_asm)
|
|
move t0, zero
|
|
move v1, a1
|
|
.ifeqs "\func","kernel"
|
|
1: EX(lbu, v0, (v1), .Lfault\@)
|
|
.else
|
|
1: EX(lbue, v0, (v1), .Lfault\@)
|
|
.endif
|
|
PTR_ADDIU v1, 1
|
|
R10KCBARRIER(0(ra))
|
|
sb v0, (a0)
|
|
beqz v0, 2f
|
|
PTR_ADDIU t0, 1
|
|
PTR_ADDIU a0, 1
|
|
bne t0, a2, 1b
|
|
2: PTR_ADDU v0, a1, t0
|
|
xor v0, a1
|
|
bltz v0, .Lfault\@
|
|
move v0, t0
|
|
jr ra # return n
|
|
END(__strncpy_from_\func\()_asm)
|
|
|
|
.Lfault\@:
|
|
li v0, -EFAULT
|
|
jr ra
|
|
|
|
.section __ex_table,"a"
|
|
PTR 1b, .Lfault\@
|
|
.previous
|
|
|
|
.endm
|
|
|
|
#ifndef CONFIG_EVA
|
|
/* Set aliases */
|
|
.global __strncpy_from_user_asm
|
|
.global __strncpy_from_user_nocheck_asm
|
|
.set __strncpy_from_user_asm, __strncpy_from_kernel_asm
|
|
.set __strncpy_from_user_nocheck_asm, __strncpy_from_kernel_nocheck_asm
|
|
EXPORT_SYMBOL(__strncpy_from_user_asm)
|
|
EXPORT_SYMBOL(__strncpy_from_user_nocheck_asm)
|
|
#endif
|
|
|
|
__BUILD_STRNCPY_ASM kernel
|
|
EXPORT_SYMBOL(__strncpy_from_kernel_asm)
|
|
EXPORT_SYMBOL(__strncpy_from_kernel_nocheck_asm)
|
|
|
|
#ifdef CONFIG_EVA
|
|
.set push
|
|
.set eva
|
|
__BUILD_STRNCPY_ASM user
|
|
.set pop
|
|
EXPORT_SYMBOL(__strncpy_from_user_asm)
|
|
EXPORT_SYMBOL(__strncpy_from_user_nocheck_asm)
|
|
#endif
|