| From f87b1c49bc675da30d8e1e8f4b60b800312c7b90 Mon Sep 17 00:00:00 2001 |
| From: Kees Cook <keescook@chromium.org> |
| Date: Mon, 10 Feb 2020 02:04:17 +0100 |
| Subject: ARM: 8958/1: rename missed uaccess .fixup section |
| |
| From: Kees Cook <keescook@chromium.org> |
| |
| commit f87b1c49bc675da30d8e1e8f4b60b800312c7b90 upstream. |
| |
| When the uaccess .fixup section was renamed to .text.fixup, one case was |
| missed. Under ld.bfd, the orphaned section was moved close to .text |
| (since they share the "ax" bits), so things would work normally on |
| uaccess faults. Under ld.lld, the orphaned section was placed outside |
| the .text section, making it unreachable. |
| |
| Link: https://github.com/ClangBuiltLinux/linux/issues/282 |
| Link: https://bugs.chromium.org/p/chromium/issues/detail?id=1020633#c44 |
| Link: https://lore.kernel.org/r/nycvar.YSQ.7.76.1912032147340.17114@knanqh.ubzr |
| Link: https://lore.kernel.org/lkml/202002071754.F5F073F1D@keescook/ |
| |
| Fixes: c4a84ae39b4a5 ("ARM: 8322/1: keep .text and .fixup regions closer together") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Kees Cook <keescook@chromium.org> |
| Reviewed-by: Ard Biesheuvel <ardb@kernel.org> |
| Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> |
| Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/arm/lib/copy_from_user.S | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/arm/lib/copy_from_user.S |
| +++ b/arch/arm/lib/copy_from_user.S |
| @@ -118,7 +118,7 @@ ENTRY(arm_copy_from_user) |
| |
| ENDPROC(arm_copy_from_user) |
| |
| - .pushsection .fixup,"ax" |
| + .pushsection .text.fixup,"ax" |
| .align 0 |
| copy_abort_preamble |
| ldmfd sp!, {r1, r2, r3} |