[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200728202229.1195682-2-krisman@collabora.com>
Date: Tue, 28 Jul 2020 16:22:24 -0400
From: Gabriel Krisman Bertazi <krisman@...labora.com>
To: luto@...nel.org, tglx@...utronix.de
Cc: keescook@...omium.org, x86@...nel.org,
linux-kernel@...r.kernel.org,
Gabriel Krisman Bertazi <krisman@...labora.com>,
kernel@...labora.com
Subject: [PATCH 1/6] arch: x86: Don't use TIF flags for mm context
TIF_IA32 and TIF_X32 are going away. Create a dedicated enum for the
MM context.
Signed-off-by: Gabriel Krisman Bertazi <krisman@...labora.com>
---
arch/x86/include/asm/mmu_context.h | 2 +-
arch/x86/include/asm/thread_info.h | 6 ++++++
arch/x86/kernel/process_64.c | 4 ++--
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
index 47562147e70b..055ee5d66b41 100644
--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -178,7 +178,7 @@ static inline void arch_exit_mmap(struct mm_struct *mm)
static inline bool is_64bit_mm(struct mm_struct *mm)
{
return !IS_ENABLED(CONFIG_IA32_EMULATION) ||
- !(mm->context.ia32_compat == TIF_IA32);
+ !(mm->context.ia32_compat == PSABI_IA32);
}
#else
static inline bool is_64bit_mm(struct mm_struct *mm)
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
index 267701ae3d86..934aa15b20f2 100644
--- a/arch/x86/include/asm/thread_info.h
+++ b/arch/x86/include/asm/thread_info.h
@@ -53,6 +53,12 @@ struct task_struct;
#include <asm/cpufeature.h>
#include <linux/atomic.h>
+enum {
+ PSABI_IA64 = 0,
+ PSABI_IA32 = 1,
+ PSABI_X32 = 2
+};
+
struct thread_info {
unsigned long flags; /* low level flags */
u32 status; /* thread synchronous flags */
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 9a97415b2139..4452a35402f9 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -557,7 +557,7 @@ static void __set_personality_x32(void)
clear_thread_flag(TIF_IA32);
set_thread_flag(TIF_X32);
if (current->mm)
- current->mm->context.ia32_compat = TIF_X32;
+ current->mm->context.ia32_compat = PSABI_X32;
current->personality &= ~READ_IMPLIES_EXEC;
/*
* in_32bit_syscall() uses the presence of the x32 syscall bit
@@ -578,7 +578,7 @@ static void __set_personality_ia32(void)
set_thread_flag(TIF_IA32);
clear_thread_flag(TIF_X32);
if (current->mm)
- current->mm->context.ia32_compat = TIF_IA32;
+ current->mm->context.ia32_compat = PSABI_IA32;
current->personality |= force_personality32;
/* Prepare the first "return" to user space */
task_pt_regs(current)->orig_ax = __NR_ia32_execve;
--
2.27.0
Powered by blists - more mailing lists