Re: [PATCH 4/6] arch: x86: Expose psABI on thread_info

2020-07-28 Thread Andy Lutomirski
On Tue, Jul 28, 2020 at 1:22 PM Gabriel Krisman Bertazi
 wrote:
>
> Expose psABI in thread_info, in preparation for the TIF_IA32 and
> TIF_X32 flags removal.

NAK.  Linux threads don't have a user ABI like this.  See my other comments :)

--Andy


[PATCH 4/6] arch: x86: Expose psABI on thread_info

2020-07-28 Thread Gabriel Krisman Bertazi
Expose psABI in thread_info, in preparation for the TIF_IA32 and
TIF_X32 flags removal.

Signed-off-by: Gabriel Krisman Bertazi 
---
 arch/x86/include/asm/thread_info.h | 2 ++
 arch/x86/kernel/process_64.c   | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/arch/x86/include/asm/thread_info.h 
b/arch/x86/include/asm/thread_info.h
index 6d55a9c0dda2..698feefd5f5f 100644
--- a/arch/x86/include/asm/thread_info.h
+++ b/arch/x86/include/asm/thread_info.h
@@ -62,11 +62,13 @@ enum {
 struct thread_info {
unsigned long   flags;  /* low level flags */
u32 status; /* thread synchronous flags */
+   short int   psabi;
 };
 
 #define INIT_THREAD_INFO(tsk)  \
 {  \
.flags  = 0,\
+   .psabi  = 0,\
 }
 
 #else /* !__ASSEMBLY__ */
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index f20a365017b8..aea2c03e8a5d 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -532,6 +532,7 @@ void set_personality_64bit(void)
/* inherit personality from parent */
 
/* Make sure to be in 64bit mode */
+   current_thread_info()->psabi = PSABI_IA64;
clear_thread_flag(TIF_IA32);
clear_thread_flag(TIF_ADDR32);
clear_thread_flag(TIF_X32);
@@ -553,6 +554,7 @@ void set_personality_64bit(void)
 static void __set_personality_x32(void)
 {
 #ifdef CONFIG_X86_X32
+   current_thread_info()->psabi = PSABI_X32;
clear_thread_flag(TIF_IA32);
set_thread_flag(TIF_X32);
if (current->mm)
@@ -574,6 +576,7 @@ static void __set_personality_x32(void)
 static void __set_personality_ia32(void)
 {
 #ifdef CONFIG_IA32_EMULATION
+   current_thread_info()->psabi = PSABI_IA32;
set_thread_flag(TIF_IA32);
clear_thread_flag(TIF_X32);
if (current->mm)
-- 
2.27.0