[GIT,pull] x86/urgent for v6.2-rc1

Message ID 167083907785.564878.11381307641454805335.tglx@xen13.tec.linutronix.de
State New
Headers
Series [GIT,pull] x86/urgent for v6.2-rc1 |

Commit Message

Thomas Gleixner Dec. 12, 2022, 10:08 a.m. UTC
  Linus,

please pull the latest x86/urgent branch from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-2022-12-12

up to:  45be2ad007a9: x86/vdso: Conditionally export __vdso_sgx_enter_enclave()

Three small x86 fixes which did not make it into 6.1:

  - Remove a superfluous noinline which prevents GCC-7.3 to optimize a stub
    function away.

  - Allow uprobes on REP NOP and do not treat them like word-sized branch
    instructions.

  - Make the VDSO symbol export of __vdso_sgx_enter_enclave() depend on
    CONFIG_X86_SGX to prevent build fails with newer LLVM versions which
    rightfully detect that there is no function behind the symbol.

Thanks,

	tglx

------------------>
Miaohe Lin (1):
      x86/alternative: Remove noinline from __ibt_endbr_seal[_end]() stubs

Nathan Chancellor (1):
      x86/vdso: Conditionally export __vdso_sgx_enter_enclave()

Oleg Nesterov (1):
      uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix


 arch/x86/entry/vdso/vdso.lds.S | 2 ++
 arch/x86/kernel/alternative.c  | 2 +-
 arch/x86/kernel/uprobes.c      | 4 +++-
 3 files changed, 6 insertions(+), 2 deletions(-)
  

Comments

pr-tracker-bot@kernel.org Dec. 12, 2022, 9:11 p.m. UTC | #1
The pull request you sent on Mon, 12 Dec 2022 11:08:59 +0100 (CET):

> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-2022-12-12

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/9c2b840a3b446ec2a7fc1cfb68af481905ec6f5f

Thank you!
  

Patch

diff --git a/arch/x86/entry/vdso/vdso.lds.S b/arch/x86/entry/vdso/vdso.lds.S
index 4bf48462fca7..e8c60ae7a7c8 100644
--- a/arch/x86/entry/vdso/vdso.lds.S
+++ b/arch/x86/entry/vdso/vdso.lds.S
@@ -27,7 +27,9 @@  VERSION {
 		__vdso_time;
 		clock_getres;
 		__vdso_clock_getres;
+#ifdef CONFIG_X86_SGX
 		__vdso_sgx_enter_enclave;
+#endif
 	local: *;
 	};
 }
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 5cadcea035e0..beaf9fc44e2f 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -624,7 +624,7 @@  void __init_or_module noinline apply_ibt_endbr(s32 *start, s32 *end)
 
 #else
 
-void __init_or_module noinline apply_ibt_endbr(s32 *start, s32 *end) { }
+void __init_or_module apply_ibt_endbr(s32 *start, s32 *end) { }
 
 #endif /* CONFIG_X86_KERNEL_IBT */
 
diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
index b63cf8f7745e..6c07f6daaa22 100644
--- a/arch/x86/kernel/uprobes.c
+++ b/arch/x86/kernel/uprobes.c
@@ -722,8 +722,9 @@  static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
 	switch (opc1) {
 	case 0xeb:	/* jmp 8 */
 	case 0xe9:	/* jmp 32 */
-	case 0x90:	/* prefix* + nop; same as jmp with .offs = 0 */
 		break;
+	case 0x90:	/* prefix* + nop; same as jmp with .offs = 0 */
+		goto setup;
 
 	case 0xe8:	/* call relative */
 		branch_clear_offset(auprobe, insn);
@@ -753,6 +754,7 @@  static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
 			return -ENOTSUPP;
 	}
 
+setup:
 	auprobe->branch.opc1 = opc1;
 	auprobe->branch.ilen = insn->length;
 	auprobe->branch.offs = insn->immediate.value;