From: tip-bot for Jiri Olsa <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: eranian@google.com, mingo@kernel.org, a.p.zijlstra@chello.nl,
torvalds@linux-foundation.org, acme@ghostprotocols.net,
jolsa@redhat.com, fweisbec@gmail.com, akpm@linux-foundation.org,
tglx@linutronix.de, oleg@redhat.com, cjashfor@linux.vnet.ibm.com,
linux-kernel@vger.kernel.org, hpa@zytor.com, paulus@samba.org,
andi@firstfloor.org, vincent.weaver@maine.edu, mingo@elte.hu
Subject: [tip:perf/core] x86/signals: Propagate RF EFLAGS bit through the signal restore call
Date: Tue, 28 May 2013 05:51:34 -0700 [thread overview]
Message-ID: <tip-5e219b3c671b34b2d79468fe89c44c0460c0f02b@git.kernel.org> (raw)
In-Reply-To: <1367421944-19082-2-git-send-email-jolsa@redhat.com>
Commit-ID: 5e219b3c671b34b2d79468fe89c44c0460c0f02b
Gitweb: http://git.kernel.org/tip/5e219b3c671b34b2d79468fe89c44c0460c0f02b
Author: Jiri Olsa <jolsa@redhat.com>
AuthorDate: Wed, 1 May 2013 17:25:41 +0200
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 28 May 2013 08:46:50 +0200
x86/signals: Propagate RF EFLAGS bit through the signal restore call
While porting Vince's perf overflow tests I found perf event
breakpoint overflow does not work properly.
I found the x86 RF EFLAG bit not being set when returning
from debug exception after triggering signal handler. Which
is exactly what you get when you set perf breakpoint overflow
SIGIO handler.
This patch and the next two patches fix the underlying bugs.
This patch adds the RF EFLAGS bit to be restored on return from
signal from the original register context before the signal was
entered.
This will prevent the RF flag to disappear when returning
from exception due to the signal handler being executed.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Tested-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Frederic Weisbecker <fweisbec@gmail.com>
Originally-Reported-by: Vince Weaver <vincent.weaver@maine.edu>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: Stephane Eranian <eranian@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1367421944-19082-2-git-send-email-jolsa@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/ia32/ia32_signal.c | 2 --
arch/x86/include/asm/sighandling.h | 4 ++--
arch/x86/kernel/signal.c | 6 ------
3 files changed, 2 insertions(+), 10 deletions(-)
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index cf1a471..bccfca6 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -34,8 +34,6 @@
#include <asm/sys_ia32.h>
#include <asm/smap.h>
-#define FIX_EFLAGS __FIX_EFLAGS
-
int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
{
int err = 0;
diff --git a/arch/x86/include/asm/sighandling.h b/arch/x86/include/asm/sighandling.h
index beff97f..7a95816 100644
--- a/arch/x86/include/asm/sighandling.h
+++ b/arch/x86/include/asm/sighandling.h
@@ -7,10 +7,10 @@
#include <asm/processor-flags.h>
-#define __FIX_EFLAGS (X86_EFLAGS_AC | X86_EFLAGS_OF | \
+#define FIX_EFLAGS (X86_EFLAGS_AC | X86_EFLAGS_OF | \
X86_EFLAGS_DF | X86_EFLAGS_TF | X86_EFLAGS_SF | \
X86_EFLAGS_ZF | X86_EFLAGS_AF | X86_EFLAGS_PF | \
- X86_EFLAGS_CF)
+ X86_EFLAGS_CF | X86_EFLAGS_RF)
void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
index 6956299..9df4c0b 100644
--- a/arch/x86/kernel/signal.c
+++ b/arch/x86/kernel/signal.c
@@ -43,12 +43,6 @@
#include <asm/sigframe.h>
-#ifdef CONFIG_X86_32
-# define FIX_EFLAGS (__FIX_EFLAGS | X86_EFLAGS_RF)
-#else
-# define FIX_EFLAGS __FIX_EFLAGS
-#endif
-
#define COPY(x) do { \
get_user_ex(regs->x, &sc->x); \
} while (0)
next prev parent reply other threads:[~2013-05-28 12:52 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-01 15:25 [PATCHv3 0/4] perf, signal x86: Fix breakpoint events overflow handling Jiri Olsa
2013-05-01 15:25 ` [PATCH 1/4] signal x86: Propage RF EFLAGS bit throught the signal restore call Jiri Olsa
2013-05-28 12:51 ` tip-bot for Jiri Olsa [this message]
2013-05-01 15:25 ` [PATCH 2/4] signal x86: Clear RF EFLAGS bit for signal handler Jiri Olsa
2013-05-28 12:52 ` [tip:perf/core] x86/signals: " tip-bot for Jiri Olsa
2013-05-01 15:25 ` [PATCH 3/4] signal x86: Merge EFLAGS bit clearing into single statement Jiri Olsa
2013-05-28 12:54 ` [tip:perf/core] x86/signals: Merge EFLAGS bit clearing into a " tip-bot for Jiri Olsa
2013-05-01 15:25 ` [PATCH 4/4] perf: Fix hw breakpoints overflow period sampling Jiri Olsa
2013-05-28 12:56 ` [tip:perf/core] " tip-bot for Jiri Olsa
2013-05-01 15:52 ` [PATCHv3 0/4] perf, signal x86: Fix breakpoint events overflow handling Oleg Nesterov
2013-05-07 12:29 ` Jiri Olsa
2013-05-15 15:04 ` Jiri Olsa
2013-05-15 15:44 ` Frederic Weisbecker
2013-05-15 19:28 ` Jiri Olsa
2013-05-15 16:52 ` Peter Zijlstra
2013-05-15 19:28 ` Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-5e219b3c671b34b2d79468fe89c44c0460c0f02b@git.kernel.org \
--to=tipbot@zytor.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@ghostprotocols.net \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=cjashfor@linux.vnet.ibm.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=paulus@samba.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vincent.weaver@maine.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).