All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Kan Liang <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, ak@linux.intel.com,
	yao.jin@linux.intel.com, tglx@linutronix.de, mingo@kernel.org,
	acme@redhat.com, hpa@zytor.com, wangnan0@huawei.com,
	jolsa@kernel.org, peterz@infradead.org, kan.liang@intel.com,
	namhyung@kernel.org
Subject: [tip:perf/urgent] perf mmap: Discard 'prev' in perf_mmap__read()
Date: Tue, 13 Feb 2018 04:06:34 -0800	[thread overview]
Message-ID: <tip-a41cf9d483fbf0a97e8b131b6a006f558fdd502d@git.kernel.org> (raw)
In-Reply-To: <1516310792-208685-7-git-send-email-kan.liang@intel.com>

Commit-ID:  a41cf9d483fbf0a97e8b131b6a006f558fdd502d
Gitweb:     https://git.kernel.org/tip/a41cf9d483fbf0a97e8b131b6a006f558fdd502d
Author:     Kan Liang <kan.liang@intel.com>
AuthorDate: Thu, 18 Jan 2018 13:26:21 -0800
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 6 Feb 2018 10:11:50 -0300

perf mmap: Discard 'prev' in perf_mmap__read()

The 'start' and 'prev' variables are duplicates in perf_mmap__read().

Use 'map->prev' to replace 'start' in perf_mmap__read_*().

Suggested-by: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-7-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index 38fa69d..125bfda 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -22,29 +22,27 @@ size_t perf_mmap__mmap_len(struct perf_mmap *map)
 
 /* When check_messup is true, 'end' must points to a good entry */
 static union perf_event *perf_mmap__read(struct perf_mmap *map,
-					 u64 start, u64 end, u64 *prev)
+					 u64 *startp, u64 end)
 {
 	unsigned char *data = map->base + page_size;
 	union perf_event *event = NULL;
-	int diff = end - start;
+	int diff = end - *startp;
 
 	if (diff >= (int)sizeof(event->header)) {
 		size_t size;
 
-		event = (union perf_event *)&data[start & map->mask];
+		event = (union perf_event *)&data[*startp & map->mask];
 		size = event->header.size;
 
-		if (size < sizeof(event->header) || diff < (int)size) {
-			event = NULL;
-			goto broken_event;
-		}
+		if (size < sizeof(event->header) || diff < (int)size)
+			return NULL;
 
 		/*
 		 * Event straddles the mmap boundary -- header should always
 		 * be inside due to u64 alignment of output.
 		 */
-		if ((start & map->mask) + size != ((start + size) & map->mask)) {
-			unsigned int offset = start;
+		if ((*startp & map->mask) + size != ((*startp + size) & map->mask)) {
+			unsigned int offset = *startp;
 			unsigned int len = min(sizeof(*event), size), cpy;
 			void *dst = map->event_copy;
 
@@ -59,20 +57,15 @@ static union perf_event *perf_mmap__read(struct perf_mmap *map,
 			event = (union perf_event *)map->event_copy;
 		}
 
-		start += size;
+		*startp += size;
 	}
 
-broken_event:
-	if (prev)
-		*prev = start;
-
 	return event;
 }
 
 union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
 {
 	u64 head;
-	u64 old = map->prev;
 
 	/*
 	 * Check if event was unmapped due to a POLLHUP/POLLERR.
@@ -82,13 +75,12 @@ union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
 
 	head = perf_mmap__read_head(map);
 
-	return perf_mmap__read(map, old, head, &map->prev);
+	return perf_mmap__read(map, &map->prev, head);
 }
 
 union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
 {
 	u64 head, end;
-	u64 start = map->prev;
 
 	/*
 	 * Check if event was unmapped due to a POLLHUP/POLLERR.
@@ -118,7 +110,7 @@ union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
 	else
 		end = head + map->mask + 1;
 
-	return perf_mmap__read(map, start, end, &map->prev);
+	return perf_mmap__read(map, &map->prev, end);
 }
 
 void perf_mmap__read_catchup(struct perf_mmap *map)

  reply	other threads:[~2018-02-13 12:17 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-18 21:26 [PATCH V5 00/17] perf top overwrite mode kan.liang
2018-01-18 21:26 ` [PATCH V5 01/17] perf evlist: remove stale mmap read for backward kan.liang
2018-02-13 12:04   ` [tip:perf/urgent] perf evlist: Remove " tip-bot for Kan Liang
2018-02-16  9:34   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 02/17] perf mmap: fix: recalculate size for overwrite mode kan.liang
2018-02-01 21:23   ` Arnaldo Carvalho de Melo
2018-02-01 21:55     ` Liang, Kan
2018-02-13 12:04   ` [tip:perf/urgent] perf mmap: Recalculate " tip-bot for Kan Liang
2018-02-16  9:34   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 03/17] perf mmap: cleanup perf_mmap__push() kan.liang
2018-02-13 12:05   ` [tip:perf/urgent] perf mmap: Cleanup perf_mmap__push() tip-bot for Kan Liang
2018-02-16  9:35   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 04/17] perf mmap: introduce perf_mmap__read_init() kan.liang
2018-02-13 12:05   ` [tip:perf/urgent] perf mmap: Introduce perf_mmap__read_init() tip-bot for Kan Liang
2018-02-16  9:35   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 05/17] perf mmap: add new return value logic for perf_mmap__read_init() kan.liang
2018-02-13 12:06   ` [tip:perf/urgent] perf mmap: Add " tip-bot for Kan Liang
2018-02-16  9:36   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 06/17] perf mmap: discard 'prev' in perf_mmap__read() kan.liang
2018-02-13 12:06   ` tip-bot for Kan Liang [this message]
2018-02-16  9:36   ` [tip:perf/urgent] perf mmap: Discard " tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 07/17] perf mmap: introduce perf_mmap__read_done kan.liang
2018-02-13 12:07   ` [tip:perf/urgent] perf mmap: Introduce perf_mmap__read_done() tip-bot for Kan Liang
2018-02-16  9:37   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 08/17] perf mmap: introduce perf_mmap__read_event() kan.liang
2018-02-13 12:07   ` [tip:perf/urgent] perf mmap: Introduce perf_mmap__read_event() tip-bot for Kan Liang
2018-02-16  9:37   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 09/17] perf test: update mmap read functions for backward-ring-buffer test kan.liang
2018-02-13 12:07   ` [tip:perf/urgent] perf test: Update " tip-bot for Kan Liang
2018-02-16  9:38   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 10/17] perf mmap: discard legacy interface for mmap read kan.liang
2018-02-13 12:08   ` [tip:perf/urgent] perf mmap: Discard " tip-bot for Kan Liang
2018-02-16  9:38   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 11/17] perf top: check per-event overwrite term kan.liang
2018-02-13 12:08   ` [tip:perf/urgent] perf top: Check " tip-bot for Kan Liang
2018-02-16  9:39   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 12/17] perf evsel: expose perf_missing_features.write_backward kan.liang
2018-02-02 14:26   ` Arnaldo Carvalho de Melo
2018-02-02 14:53     ` Liang, Kan
2018-01-18 21:26 ` [PATCH V5 13/17] perf top: add overwrite fall back kan.liang
2018-02-13 12:09   ` [tip:perf/urgent] perf top: Add " tip-bot for Kan Liang
2018-02-16  9:40   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 14/17] perf hists browser: add parameter to disable lost event warning kan.liang
2018-02-13 12:10   ` [tip:perf/urgent] perf hists browser: Add " tip-bot for Kan Liang
2018-02-16  9:40   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 15/17] perf top: remove lost events checking kan.liang
2018-02-13 12:10   ` [tip:perf/urgent] perf top: Remove " tip-bot for Kan Liang
2018-02-16  9:41   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 16/17] perf top: switch default mode to overwrite mode kan.liang
2018-02-13 12:10   ` [tip:perf/urgent] perf top: Switch " tip-bot for Kan Liang
2018-02-16  9:41   ` tip-bot for Kan Liang
2018-01-18 21:26 ` [PATCH V5 17/17] perf top: check the latency of perf_top__mmap_read() kan.liang
2018-02-13 12:11   ` [tip:perf/urgent] perf top: Check " tip-bot for Kan Liang
2018-02-16  9:42   ` tip-bot for Kan Liang
2018-01-21 12:59 ` [PATCH V5 00/17] perf top overwrite mode 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-a41cf9d483fbf0a97e8b131b6a006f558fdd502d@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=wangnan0@huawei.com \
    --cc=yao.jin@linux.intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.