diff options
author | Helge Deller | 2018-11-29 17:05:47 +0100 |
---|---|---|
committer | Greg Kroah-Hartman | 2018-12-13 09:16:18 +0100 |
commit | 6c9ac388c6c86c32bc559c06a4ec52aa0f400374 (patch) | |
tree | 30daca0a53d3722e53b7e3a736ab79823d52ec53 /arch/parisc | |
parent | Revert "mfd: cros_ec: Use devm_kzalloc for private data" (diff) | |
download | kernel-qcow2-linux-6c9ac388c6c86c32bc559c06a4ec52aa0f400374.tar.gz kernel-qcow2-linux-6c9ac388c6c86c32bc559c06a4ec52aa0f400374.tar.xz kernel-qcow2-linux-6c9ac388c6c86c32bc559c06a4ec52aa0f400374.zip |
parisc: Enable -ffunction-sections for modules on 32-bit kernel
commit 1e8249b8a4e960018e4baca6b523b8a4500af600 upstream.
Frank Schreiner reported, that since kernel 4.18 he faces sysfs-warnings
when loading modules on a 32-bit kernel. Here is one such example:
sysfs: cannot create duplicate filename '/module/nfs/sections/.text'
CPU: 0 PID: 98 Comm: modprobe Not tainted 4.18.0-2-parisc #1 Debian 4.18.10-2
Backtrace:
[<1017ce2c>] show_stack+0x3c/0x50
[<107a7210>] dump_stack+0x28/0x38
[<103f900c>] sysfs_warn_dup+0x88/0xac
[<103f8b1c>] sysfs_add_file_mode_ns+0x164/0x1d0
[<103f9e70>] internal_create_group+0x11c/0x304
[<103fa0a0>] sysfs_create_group+0x48/0x60
[<1022abe8>] load_module.constprop.35+0x1f9c/0x23b8
[<1022b278>] sys_finit_module+0xd0/0x11c
[<101831dc>] syscall_exit+0x0/0x14
This warning gets triggered by the fact, that due to commit 24b6c22504a2
("parisc: Build kernel without -ffunction-sections") we now get multiple .text
sections in the kernel modules for which sysfs_create_group() can't create
multiple virtual files.
This patch works around the problem by re-enabling the -ffunction-sections
compiler option for modules, while keeping it disabled for the non-module
kernel code.
Reported-by: Frank Scheiner <frank.scheiner@web.de>
Fixes: 24b6c22504a2 ("parisc: Build kernel without -ffunction-sections")
Cc: <stable@vger.kernel.org> # v4.18+
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/Makefile | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index 5ce030266e7d..253d7ca71472 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile @@ -71,6 +71,13 @@ ifdef CONFIG_MLONGCALLS KBUILD_CFLAGS_KERNEL += -mlong-calls endif +# Without this, "ld -r" results in .text sections that are too big (> 0x40000) +# for branches to reach stubs. And multiple .text sections trigger a warning +# when creating the sysfs module information section. +ifndef CONFIG_64BIT +KBUILD_CFLAGS_MODULE += -ffunction-sections +endif + # select which processor to optimise for cflags-$(CONFIG_PA7000) += -march=1.1 -mschedule=7100 cflags-$(CONFIG_PA7200) += -march=1.1 -mschedule=7200 |