From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Ian Rogers <irogers@google.com>, KP Singh <kpsingh@google.com>,
Peter Zijlstra <peterz@infradead.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 4.4 08/11] perf/core: fix parent pid/tid in task exit events
Date: Thu, 30 Apr 2020 09:54:50 -0400 [thread overview]
Message-ID: <20200430135453.21353-8-sashal@kernel.org> (raw)
In-Reply-To: <20200430135453.21353-1-sashal@kernel.org>
From: Ian Rogers <irogers@google.com>
[ Upstream commit f3bed55e850926614b9898fe982f66d2541a36a5 ]
Current logic yields the child task as the parent.
Before:
$ perf record bash -c "perf list > /dev/null"
$ perf script -D |grep 'FORK\|EXIT'
4387036190981094 0x5a70 [0x30]: PERF_RECORD_FORK(10472:10472):(10470:10470)
4387036606207580 0xf050 [0x30]: PERF_RECORD_EXIT(10472:10472):(10472:10472)
4387036607103839 0x17150 [0x30]: PERF_RECORD_EXIT(10470:10470):(10470:10470)
^
Note the repeated values here -------------------/
After:
383281514043 0x9d8 [0x30]: PERF_RECORD_FORK(2268:2268):(2266:2266)
383442003996 0x2180 [0x30]: PERF_RECORD_EXIT(2268:2268):(2266:2266)
383451297778 0xb70 [0x30]: PERF_RECORD_EXIT(2266:2266):(2265:2265)
Fixes: 94d5d1b2d891 ("perf_counter: Report the cloning task as parent on perf_counter_fork()")
Reported-by: KP Singh <kpsingh@google.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20200417182842.12522-1-irogers@google.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/events/core.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 203384a71feed..feff3ba98cc9f 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -5810,10 +5810,17 @@ static void perf_event_task_output(struct perf_event *event,
goto out;
task_event->event_id.pid = perf_event_pid(event, task);
- task_event->event_id.ppid = perf_event_pid(event, current);
-
task_event->event_id.tid = perf_event_tid(event, task);
- task_event->event_id.ptid = perf_event_tid(event, current);
+
+ if (task_event->event_id.header.type == PERF_RECORD_EXIT) {
+ task_event->event_id.ppid = perf_event_pid(event,
+ task->real_parent);
+ task_event->event_id.ptid = perf_event_pid(event,
+ task->real_parent);
+ } else { /* PERF_RECORD_FORK */
+ task_event->event_id.ppid = perf_event_pid(event, current);
+ task_event->event_id.ptid = perf_event_tid(event, current);
+ }
task_event->event_id.time = perf_event_clock(event);
--
2.20.1
next prev parent reply other threads:[~2020-04-30 13:56 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-30 13:54 [PATCH AUTOSEL 4.4 01/11] iio:ad7797: Use correct attribute_group Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 02/11] selftests/ipc: Fix test failure seen after initial test run Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 03/11] wimax/i2400m: Fix potential urb refcnt leak Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 04/11] team: fix hang in team_mode_get() Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 05/11] cifs: protect updating server->dstaddr with a spinlock Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 06/11] macvlan: fix null dereference in macvlan_device_event() Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 07/11] scripts/config: allow colons in option strings for sed Sasha Levin
2020-04-30 13:54 ` Sasha Levin [this message]
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 09/11] lib/mpi: Fix building for powerpc with clang Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 10/11] net: bcmgenet: suppress warnings on failed Rx SKB allocations Sasha Levin
2020-04-30 13:54 ` [PATCH AUTOSEL 4.4 11/11] net: systemport: " Sasha Levin
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=20200430135453.21353-8-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=irogers@google.com \
--cc=kpsingh@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=stable@vger.kernel.org \
/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
all inboxes | Powered by JetHome®