| From d35cbe1d662719dabf8d6b83ef87be820a175485 Mon Sep 17 00:00:00 2001 |
| From: Peter Zijlstra <peterz@infradead.org> |
| Date: Wed, 3 Apr 2019 09:39:45 +0200 |
| Subject: x86/uaccess: Fix up the fixup |
| |
| [ Upstream commit b69656fa7ea2f75e47d7bd5b9430359fa46488af ] |
| |
| New tooling got confused about this: |
| |
| arch/x86/lib/memcpy_64.o: warning: objtool: .fixup+0x7: return with UACCESS enabled |
| |
| While the code isn't wrong, it is tedious (if at all possible) to |
| figure out what function a particular chunk of .fixup belongs to. |
| |
| This then confuses the objtool uaccess validation. Instead of |
| returning directly from the .fixup, jump back into the right function. |
| |
| Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> |
| Cc: Borislav Petkov <bp@alien8.de> |
| Cc: Josh Poimboeuf <jpoimboe@redhat.com> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/x86/lib/memcpy_64.S | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S |
| index 3b24dc05251c7..9d05572370edc 100644 |
| --- a/arch/x86/lib/memcpy_64.S |
| +++ b/arch/x86/lib/memcpy_64.S |
| @@ -257,6 +257,7 @@ ENTRY(__memcpy_mcsafe) |
| /* Copy successful. Return zero */ |
| .L_done_memcpy_trap: |
| xorl %eax, %eax |
| +.L_done: |
| ret |
| ENDPROC(__memcpy_mcsafe) |
| EXPORT_SYMBOL_GPL(__memcpy_mcsafe) |
| @@ -273,7 +274,7 @@ EXPORT_SYMBOL_GPL(__memcpy_mcsafe) |
| addl %edx, %ecx |
| .E_trailing_bytes: |
| mov %ecx, %eax |
| - ret |
| + jmp .L_done |
| |
| /* |
| * For write fault handling, given the destination is unaligned, |
| -- |
| 2.20.1 |
| |