All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	Stephane Eranian <eranian@google.com>,
	David Ahern <dsahern@gmail.com>, Jiri Olsa <jolsa@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 21/24] perf tools: fix off-by-one error in maps
Date: Tue, 14 Oct 2014 18:04:30 -0300	[thread overview]
Message-ID: <1413320673-5784-22-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1413320673-5784-1-git-send-email-acme@kernel.org>

From: Stephane Eranian <eranian@google.com>

This patch fixes off-by-one errors in the management of maps.

A map is defined by start address and length as implemented by
map__new():

  map__init(map, type, start, start + len, pgoff, dso);

  map->start = addr;
  map->end = end;

Consequently, the actual address range is [start; end[ map->end is the
first byte outside the range.

This patch fixes two bugs where upper bound checking was off-by-one.

In V2, we fix map_groups__fixup_overlappings() some more where
map->start was off-by-one as reported by Jiri.

Signed-off-by: Stephane Eranian <eranian@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20141006083532.GA4850@quad
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/map.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c
index b7090596ac50..186418ba18db 100644
--- a/tools/perf/util/map.c
+++ b/tools/perf/util/map.c
@@ -556,7 +556,7 @@ struct symbol *map_groups__find_symbol_by_name(struct map_groups *mg,
 
 int map_groups__find_ams(struct addr_map_symbol *ams, symbol_filter_t filter)
 {
-	if (ams->addr < ams->map->start || ams->addr > ams->map->end) {
+	if (ams->addr < ams->map->start || ams->addr >= ams->map->end) {
 		if (ams->map->groups == NULL)
 			return -1;
 		ams->map = map_groups__find(ams->map->groups, ams->map->type,
@@ -664,7 +664,7 @@ int map_groups__fixup_overlappings(struct map_groups *mg, struct map *map,
 				goto move_map;
 			}
 
-			before->end = map->start - 1;
+			before->end = map->start;
 			map_groups__insert(mg, before);
 			if (verbose >= 2)
 				map__fprintf(before, fp);
@@ -678,7 +678,7 @@ int map_groups__fixup_overlappings(struct map_groups *mg, struct map *map,
 				goto move_map;
 			}
 
-			after->start = map->end + 1;
+			after->start = map->end;
 			map_groups__insert(mg, after);
 			if (verbose >= 2)
 				map__fprintf(after, fp);
-- 
1.9.3


  parent reply	other threads:[~2014-10-14 21:07 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-14 21:04 [GIT PULL 00/24] perf/core improvements and fixes Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 01/24] perf kvm stat live: Fix perf_evlist__add_pollfd error handling Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 02/24] perf kvm stat live: Use perf_evlist__add_pollfd return fd position Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 03/24] perf kvm stat live: Use fdarray object instead of pollfd Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 04/24] perf callchain: Move callchain_param to util object in to fix python test Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 05/24] perf sched: Stop updating hists stats, not used Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 06/24] perf script: " Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 07/24] perf evsel: Add hists helper Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 08/24] perf session: Don't count per evsel events Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 09/24] perf tools: Move events_stats struct to event.h Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 10/24] perf ui browsers: Add missing include Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 11/24] perf session: Remove last reference to hists struct Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 12/24] perf evsel: Subclassing Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 13/24] perf callchain: Move the callchain_param extern to callchain.h Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 14/24] perf tools: Remove hists from evsel Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 15/24] perf thread_map: Create dummy constructor out of open coded equivalent Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 16/24] perf evlist: Check that there is a thread_map when preparing a workload Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 17/24] perf evlist: Default to syswide target when no thread/cpu maps set Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 18/24] perf evsel: Add missing 'target' struct forward declaration Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 19/24] perf evsel: Make some exit routines static Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 20/24] perf machine: Add missing dsos->root rbtree root initialization Arnaldo Carvalho de Melo
2014-10-14 21:04 ` Arnaldo Carvalho de Melo [this message]
2014-10-14 21:04 ` [PATCH 22/24] perf tools: Fixup off-by-one comparision in maps__find Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 23/24] perf symbols: Fix map->end fixup Arnaldo Carvalho de Melo
2014-10-14 21:04 ` [PATCH 24/24] perf symbols: Make sym->end be the first address after the symbol range Arnaldo Carvalho de Melo
2014-10-15  9:56 ` [GIT PULL 00/24] perf/core improvements and fixes Ingo Molnar

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=1413320673-5784-22-git-send-email-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.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 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.