Messages in this thread | | | From | David Laight <> | Subject | RE: [PATCH 3/3] Fix insn.c misaligned address error | Date | Thu, 25 Jul 2019 13:06:32 +0000 |
| |
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)
| |