[openwrt/openwrt] kernel: backport fix undefined abort
LEDE Commits
lede-commits at lists.infradead.org
Sat Feb 10 12:46:47 PST 2018
hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/b38758d4d47a769268da791ec6a1ab8b138e203e
commit b38758d4d47a769268da791ec6a1ab8b138e203e
Author: Evgeniy Didin <Evgeniy.Didin at synopsys.com>
AuthorDate: Tue Jan 30 15:36:51 2018 +0300
kernel: backport fix undefined abort
While building mpi.ko module with stable Linux v4.14.14 an error occured:
>ERROR: "abort" [lib/mpi/mpi.ko] undefined!
In upstream Linux 4.15 this issue is fixed:
Commit 7c2c11b208be ("arch: define weak abort()")
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7c2c11b208be09c156573fc0076b7b3646e05219
Commit dc8635b78cd8 ("kernel/exit.c: export abort() to modules")
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dc8635b78cd8669c37e230058d18c33af7451ab1
So lets add backport patches until these fixes
are not applied in stable version.
Signed-off-by: Evgeniy Didin <Evgeniy.Didin at synopsys.com>
Cc: Alexey Brodkin <abrodkin at synopsys.com>
CC: John Crispin <john at phrozen.org>
CC: Hauke Mehrtens <hauke at hauke-m.de>
---
.../080-v4.15-0001-arch-define-weak-abort.patch | 51 +++++++++++++++
...002-kernel-exit.c-export-abort-to-modules.patch | 74 ++++++++++++++++++++++
2 files changed, 125 insertions(+)
diff --git a/target/linux/generic/backport-4.14/080-v4.15-0001-arch-define-weak-abort.patch b/target/linux/generic/backport-4.14/080-v4.15-0001-arch-define-weak-abort.patch
new file mode 100644
index 0000000..2d247a3
--- /dev/null
+++ b/target/linux/generic/backport-4.14/080-v4.15-0001-arch-define-weak-abort.patch
@@ -0,0 +1,51 @@
+From 7c2c11b208be09c156573fc0076b7b3646e05219 Mon Sep 17 00:00:00 2001
+From: Sudip Mukherjee <sudipm.mukherjee at gmail.com>
+Date: Thu, 14 Dec 2017 15:33:19 -0800
+Subject: [PATCH] arch: define weak abort()
+
+gcc toggle -fisolate-erroneous-paths-dereference (default at -O2
+onwards) isolates faulty code paths such as null pointer access, divide
+by zero etc. If gcc port doesnt implement __builtin_trap, an abort() is
+generated which causes kernel link error.
+
+In this case, gcc is generating abort due to 'divide by zero' in
+lib/mpi/mpih-div.c.
+
+Currently 'frv' and 'arc' are failing. Previously other arch was also
+broken like m32r was fixed by commit d22e3d69ee1a ("m32r: fix build
+failure").
+
+Let's define this weak function which is common for all arch and fix the
+problem permanently. We can even remove the arch specific 'abort' after
+this is done.
+
+Link: http://lkml.kernel.org/r/1513118956-8718-1-git-send-email-sudipm.mukherjee@gmail.com
+Signed-off-by: Sudip Mukherjee <sudipm.mukherjee at gmail.com>
+Cc: Alexey Brodkin <Alexey.Brodkin at synopsys.com>
+Cc: Vineet Gupta <Vineet.Gupta1 at synopsys.com>
+Cc: Sudip Mukherjee <sudipm.mukherjee at gmail.com>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+---
+ kernel/exit.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/kernel/exit.c b/kernel/exit.c
+index 6b4298a41167..df0c91d5606c 100644
+--- a/kernel/exit.c
++++ b/kernel/exit.c
+@@ -1755,3 +1755,11 @@ COMPAT_SYSCALL_DEFINE5(waitid,
+ return -EFAULT;
+ }
+ #endif
++
++__weak void abort(void)
++{
++ BUG();
++
++ /* if that doesn't kill us, halt */
++ panic("Oops failed to kill thread");
++}
+--
+2.11.0
+
diff --git a/target/linux/generic/backport-4.14/081-v4.15-0002-kernel-exit.c-export-abort-to-modules.patch b/target/linux/generic/backport-4.14/081-v4.15-0002-kernel-exit.c-export-abort-to-modules.patch
new file mode 100644
index 0000000..5b95b67
--- /dev/null
+++ b/target/linux/generic/backport-4.14/081-v4.15-0002-kernel-exit.c-export-abort-to-modules.patch
@@ -0,0 +1,74 @@
+From dc8635b78cd8669c37e230058d18c33af7451ab1 Mon Sep 17 00:00:00 2001
+From: Andrew Morton <akpm at linux-foundation.org>
+Date: Thu, 4 Jan 2018 16:17:56 -0800
+Subject: [PATCH] kernel/exit.c: export abort() to modules
+
+gcc -fisolate-erroneous-paths-dereference can generate calls to abort()
+from modular code too.
+
+[arnd at arndb.de: drop duplicate exports of abort()]
+ Link: http://lkml.kernel.org/r/20180102103311.706364-1-arnd@arndb.de
+Reported-by: Vineet Gupta <Vineet.Gupta1 at synopsys.com>
+Cc: Sudip Mukherjee <sudipm.mukherjee at gmail.com>
+Cc: Arnd Bergmann <arnd at arndb.de>
+Cc: Alexey Brodkin <Alexey.Brodkin at synopsys.com>
+Cc: Russell King <rmk+kernel at armlinux.org.uk>
+Cc: Jose Abreu <Jose.Abreu at synopsys.com>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+---
+ arch/arm/kernel/traps.c | 1 -
+ arch/m32r/kernel/traps.c | 1 -
+ arch/unicore32/kernel/traps.c | 1 -
+ kernel/exit.c | 1 +
+ 4 files changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
+index 5cf04888c581..3e26c6f7a191 100644
+--- a/arch/arm/kernel/traps.c
++++ b/arch/arm/kernel/traps.c
+@@ -793,7 +793,6 @@ void abort(void)
+ /* if that doesn't kill us, halt */
+ panic("Oops failed to kill thread");
+ }
+-EXPORT_SYMBOL(abort);
+
+ void __init trap_init(void)
+ {
+diff --git a/arch/m32r/kernel/traps.c b/arch/m32r/kernel/traps.c
+index cb79fba79d43..b88a8dd14933 100644
+--- a/arch/m32r/kernel/traps.c
++++ b/arch/m32r/kernel/traps.c
+@@ -122,7 +122,6 @@ void abort(void)
+ /* if that doesn't kill us, halt */
+ panic("Oops failed to kill thread");
+ }
+-EXPORT_SYMBOL(abort);
+
+ void __init trap_init(void)
+ {
+diff --git a/arch/unicore32/kernel/traps.c b/arch/unicore32/kernel/traps.c
+index 5f25b39f04d4..c4ac6043ebb0 100644
+--- a/arch/unicore32/kernel/traps.c
++++ b/arch/unicore32/kernel/traps.c
+@@ -298,7 +298,6 @@ void abort(void)
+ /* if that doesn't kill us, halt */
+ panic("Oops failed to kill thread");
+ }
+-EXPORT_SYMBOL(abort);
+
+ void __init trap_init(void)
+ {
+diff --git a/kernel/exit.c b/kernel/exit.c
+index df0c91d5606c..995453d9fb55 100644
+--- a/kernel/exit.c
++++ b/kernel/exit.c
+@@ -1763,3 +1763,4 @@ __weak void abort(void)
+ /* if that doesn't kill us, halt */
+ panic("Oops failed to kill thread");
+ }
++EXPORT_SYMBOL(abort);
+--
+2.11.0
+
More information about the lede-commits
mailing list