On 01/30/2018 04:32 PM, Andrey Jr. Melnikov wrote: > Evgeniy Didin <evgeniy.di...@synopsys.com> wrote: > >> 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.di...@synopsys.com> >> Cc: Alexey Brodkin <abrod...@synopsys.com> >> CC: John Crispin <j...@phrozen.org> >> CC: Hauke Mehrtens <ha...@hauke-m.de> > > Copy this description into commit comments. After next patch rebase - it lost.
The patch already contain the full commit message and the hash so it is pretty easy to find where they are from. I think this patch looks good. I still hope that this will go into the 4.14 stable tree and we do not have to maintain this any more. Hauke > >> --- >> .../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(+) >> create mode 100644 >> target/linux/generic/backport-4.14/080-v4.15-0001-arch-define-weak-abort.patch >> create mode 100644 >> target/linux/generic/backport-4.14/081-v4.15-0002-kernel-exit.c-export-abort-to-modules.patch > >> 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 0000000000..2d247a39e4 >> --- /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.mukher...@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.mukher...@gmail.com >> +Signed-off-by: Sudip Mukherjee <sudipm.mukher...@gmail.com> >> +Cc: Alexey Brodkin <alexey.brod...@synopsys.com> >> +Cc: Vineet Gupta <vineet.gup...@synopsys.com> >> +Cc: Sudip Mukherjee <sudipm.mukher...@gmail.com> >> +Signed-off-by: Andrew Morton <a...@linux-foundation.org> >> +Signed-off-by: Linus Torvalds <torva...@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 0000000000..5b95b6798d >> --- /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 <a...@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. >> + >> +[a...@arndb.de: drop duplicate exports of abort()] >> + Link: http://lkml.kernel.org/r/20180102103311.706364-1-a...@arndb.de >> +Reported-by: Vineet Gupta <vineet.gup...@synopsys.com> >> +Cc: Sudip Mukherjee <sudipm.mukher...@gmail.com> >> +Cc: Arnd Bergmann <a...@arndb.de> >> +Cc: Alexey Brodkin <alexey.brod...@synopsys.com> >> +Cc: Russell King <rmk+ker...@armlinux.org.uk> >> +Cc: Jose Abreu <jose.ab...@synopsys.com> >> +Signed-off-by: Andrew Morton <a...@linux-foundation.org> >> +Signed-off-by: Arnd Bergmann <a...@arndb.de> >> +Signed-off-by: Linus Torvalds <torva...@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 >> + >> -- >> 2.11.0 > > > _______________________________________________ > Lede-dev mailing list > Lede-dev@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/lede-dev > _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev