[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c256d9b6702b4d37a0c21b93f319b476@AcuMS.aculab.com>
Date: Thu, 25 Jul 2019 13:06:32 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Numfor Mbiziwo-Tiapo' <nums@...gle.com>,
"peterz@...radead.org" <peterz@...radead.org>,
"mingo@...hat.com" <mingo@...hat.com>,
"acme@...nel.org" <acme@...nel.org>,
"alexander.shishkin@...ux.intel.com"
<alexander.shishkin@...ux.intel.com>,
"jolsa@...hat.com" <jolsa@...hat.com>,
"namhyung@...nel.org" <namhyung@...nel.org>,
"songliubraving@...com" <songliubraving@...com>,
"mbd@...com" <mbd@...com>
CC: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"irogers@...gle.com" <irogers@...gle.com>,
"eranian@...gle.com" <eranian@...gle.com>
Subject: RE: [PATCH 3/3] Fix insn.c misaligned address error
From: Numfor Mbiziwo-Tiapo
> Sent: 24 July 2019 19:45
>
> The ubsan (undefined behavior sanitizer) version of perf throws an
> error on the 'x86 instruction decoder - new instructions' function
> of perf test.
>
> To reproduce this run:
> make -C tools/perf USE_CLANG=1 EXTRA_CFLAGS="-fsanitize=undefined"
>
> then run: tools/perf/perf test 62 -v
>
> The error occurs in the __get_next macro (line 34) where an int is
> read from a potentially unaligned address. Using memcpy instead of
> assignment from an unaligned pointer.
...
> #define __get_next(t, insn) \
> - ({ t r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; })
> + ({ t r; memcpy(&r, insn->next_byte, sizeof(t)); \
> + insn->next_byte += sizeof(t); r; })
Isn't there a get_unaligned_u32() (or similar) that can be used?
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Powered by blists - more mailing lists