public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Numfor Mbiziwo-Tiapo <nums@google.com>
To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org,
	alexander.shishkin@linux.intel.com, jolsa@redhat.com,
	namhyung@kernel.org, songliubraving@fb.com, mbd@fb.com
Cc: linux-kernel@vger.kernel.org, irogers@google.com,
	eranian@google.com, Numfor Mbiziwo-Tiapo <nums@google.com>
Subject: [RFC][PATCH 1/2] Fix event.c misaligned address error
Date: Wed, 24 Jul 2019 15:49:53 -0700	[thread overview]
Message-ID: <20190724224954.229540-2-nums@google.com> (raw)
In-Reply-To: <20190724224954.229540-1-nums@google.com>

The ubsan (undefined behavior sanitizer) build of perf throws an
error when the synthesize "Synthesize cpu map" function from
perf test is run.

This can be reproduced by running (from the tip directory):
make -C tools/perf USE_CLANG=1 EXTRA_CFLAGS="-fsanitize=undefined"

(see cover letter for why perf may not build)

then running: tools/perf/perf test 44 -v

This bug occurs because the cpu_map_data__synthesize function in
event.c calls synthesize_mask, casting the 'data' variable
(of type cpu_map_data*) to a cpu_map_mask*. Since struct
cpu_map_data is 2 byte aligned and struct cpu_map_mask is 8 byte
aligned this causes memory alignment issues.

This is fixed by adding 6 bytes of padding to the struct cpu_map_data,
however, this will break compatibility between perf data files - a file
written by an old perf wouldn't work with a perf with this patch due
to event data alignment changing.

Comments?

Not-Quite-Signed-off-by: Numfor Mbiziwo-Tiapo <nums@google.com>
---
 tools/perf/util/event.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index eb95f3384958..82eaf06c2604 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -433,6 +433,7 @@ struct cpu_map_mask {
 
 struct cpu_map_data {
 	u16	type;
+	u8 pad[6];
 	char	data[];
 };
 
-- 
2.22.0.657.g960e92d24f-goog


  reply	other threads:[~2019-07-24 22:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-24 22:49 [RFC][PATCH 0/2] Perf misaligned address fixes Numfor Mbiziwo-Tiapo
2019-07-24 22:49 ` Numfor Mbiziwo-Tiapo [this message]
2019-09-11  9:08   ` [RFC][PATCH 1/2] Fix event.c misaligned address error Ian Rogers
2019-09-12  8:50     ` David Laight
2019-07-24 22:49 ` [RFC][PATCH 2/2] Fix evsel.c misaligned address errors Numfor Mbiziwo-Tiapo

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=20190724224954.229540-2-nums@google.com \
    --to=nums@google.com \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mbd@fb.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=songliubraving@fb.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox