diff mbox series

[v4,2/4] x86: simplify _TIF_SYSCALL_EMU handling

Message ID 20190523090618.13410-3-sudeep.holla@arm.com
State Superseded
Headers show
Series ptrace: cleanup PTRACE_SYSEMU handling and add support for arm64 | expand

Commit Message

Sudeep Holla May 23, 2019, 9:06 a.m. UTC
The usage of emulated/_TIF_SYSCALL_EMU flags in syscall_trace_enter
seems to be bit overcomplicated than required. Let's simplify it.

Cc: Andy Lutomirski <luto@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Acked-by: Oleg Nesterov <oleg@redhat.com>

Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

---
 arch/x86/entry/common.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

-- 
2.17.1

Comments

Catalin Marinas June 3, 2019, 5:22 p.m. UTC | #1
On Thu, May 23, 2019 at 10:06:16AM +0100, Sudeep Holla wrote:
> The usage of emulated/_TIF_SYSCALL_EMU flags in syscall_trace_enter

> seems to be bit overcomplicated than required. Let's simplify it.

> 

> Cc: Andy Lutomirski <luto@kernel.org>

> Cc: Thomas Gleixner <tglx@linutronix.de>

> Cc: Ingo Molnar <mingo@redhat.com>

> Cc: Borislav Petkov <bp@alien8.de>

> Acked-by: Oleg Nesterov <oleg@redhat.com>

> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

> ---

>  arch/x86/entry/common.c | 17 ++++++-----------

>  1 file changed, 6 insertions(+), 11 deletions(-)

> 

> diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c

> index a986b3c8294c..0a61705d62ec 100644

> --- a/arch/x86/entry/common.c

> +++ b/arch/x86/entry/common.c

> @@ -72,23 +72,18 @@ static long syscall_trace_enter(struct pt_regs *regs)

>  

>  	struct thread_info *ti = current_thread_info();

>  	unsigned long ret = 0;

> -	bool emulated = false;

>  	u32 work;

>  

>  	if (IS_ENABLED(CONFIG_DEBUG_ENTRY))

>  		BUG_ON(regs != task_pt_regs(current));

>  

> -	work = READ_ONCE(ti->flags) & _TIF_WORK_SYSCALL_ENTRY;

> +	work = READ_ONCE(ti->flags);

>  

> -	if (unlikely(work & _TIF_SYSCALL_EMU))

> -		emulated = true;

> -

> -	if ((emulated || (work & _TIF_SYSCALL_TRACE)) &&

> -	    tracehook_report_syscall_entry(regs))

> -		return -1L;

> -

> -	if (emulated)

> -		return -1L;

> +	if (work & (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_EMU)) {

> +		ret = tracehook_report_syscall_entry(regs);

> +		if (ret || (work & _TIF_SYSCALL_EMU))

> +			return -1L;

> +	}


Andy (or the other x86 folk), could I please get an ack on this patch? I
plan to queue this series through the arm64 tree (though if you want to
merge it separately, it looks like an independent clean-up with no
dependencies on the other patches).

Thanks.

-- 
Catalin
Thomas Gleixner June 11, 2019, 2:38 p.m. UTC | #2
On Thu, 23 May 2019, Sudeep Holla wrote:

$Subject: Please use the proper prefix and start the sentence with an upper
case letter.

  x86/entry: Simplify _TIF_SYSCALL_EMU handling

> The usage of emulated/_TIF_SYSCALL_EMU flags in syscall_trace_enter

> seems to be bit overcomplicated than required. Let's simplify it.


s/seems to be bit overcomplicated/is more complicated/

 Either you are sure that it is overengineered, then say so. If not, then
 you should not touch the code at all.

s/Let's simplify it.//

 'Let's do X.' is a popular, but technically useless phrase.

> Cc: Andy Lutomirski <luto@kernel.org>

> Cc: Thomas Gleixner <tglx@linutronix.de>

> Cc: Ingo Molnar <mingo@redhat.com>

> Cc: Borislav Petkov <bp@alien8.de>

> Acked-by: Oleg Nesterov <oleg@redhat.com>

> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>


This is a nice simplification indeed! With the changelog fixed:

     Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
diff mbox series

Patch

diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
index a986b3c8294c..0a61705d62ec 100644
--- a/arch/x86/entry/common.c
+++ b/arch/x86/entry/common.c
@@ -72,23 +72,18 @@  static long syscall_trace_enter(struct pt_regs *regs)
 
 	struct thread_info *ti = current_thread_info();
 	unsigned long ret = 0;
-	bool emulated = false;
 	u32 work;
 
 	if (IS_ENABLED(CONFIG_DEBUG_ENTRY))
 		BUG_ON(regs != task_pt_regs(current));
 
-	work = READ_ONCE(ti->flags) & _TIF_WORK_SYSCALL_ENTRY;
+	work = READ_ONCE(ti->flags);
 
-	if (unlikely(work & _TIF_SYSCALL_EMU))
-		emulated = true;
-
-	if ((emulated || (work & _TIF_SYSCALL_TRACE)) &&
-	    tracehook_report_syscall_entry(regs))
-		return -1L;
-
-	if (emulated)
-		return -1L;
+	if (work & (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_EMU)) {
+		ret = tracehook_report_syscall_entry(regs);
+		if (ret || (work & _TIF_SYSCALL_EMU))
+			return -1L;
+	}
 
 #ifdef CONFIG_SECCOMP
 	/*