[PATCH 1/4] x86: Save return value from kernel_thread

From: Brian Gerst
Date: Sat May 21 2016 - 12:06:16 EST


Kernel threads should always return zero on success after calling do_execve(). The
two existing cases in the kernel (kernel_init() and call_usermodehelper_exec_async())
correctly do this. Save a few bytes by storing EAX/RAX instead of an immediate zero.
Also fix the 64-bit case which should save the full 64-bits.

Signed-off-by: Brian Gerst <brgerst@xxxxxxxxx>
---
arch/x86/entry/entry_32.S | 2 +-
arch/x86/entry/entry_64.S | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 983e5d3..ee6fea0 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -221,7 +221,7 @@ ENTRY(ret_from_kernel_thread)
popl %eax
movl PT_EBP(%esp), %eax
call *PT_EBX(%esp)
- movl $0, PT_EAX(%esp)
+ movl %eax, PT_EAX(%esp)

/*
* Kernel threads return to userspace as if returning from a syscall.
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 9ee0da1..ab9f8c8 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -387,7 +387,7 @@ ENTRY(ret_from_fork)
*/
movq RBP(%rsp), %rdi
call *RBX(%rsp)
- movl $0, RAX(%rsp)
+ movq %rax, RAX(%rsp)

/*
* Fall through as though we're exiting a syscall. This makes a
--
2.5.5