]> git.baikalelectronics.ru Git - kernel.git/commit
x86/insn: Use get_unaligned() instead of memcpy()
authorBorislav Petkov <bp@suse.de>
Wed, 29 Sep 2021 14:37:53 +0000 (16:37 +0200)
committerBorislav Petkov <bp@suse.de>
Wed, 6 Oct 2021 09:56:37 +0000 (11:56 +0200)
commitbeb219e1a51536dc2563a008b83ae3b8d74abaa2
tree291d9a57ece070c2053b0ed25caec473219badce
parent82961a69e58f807712622a83ce0d7ed828b13349
x86/insn: Use get_unaligned() instead of memcpy()

Use get_unaligned() instead of memcpy() to access potentially unaligned
memory, which, when accessed through a pointer, leads to undefined
behavior. get_unaligned() describes much better what is happening there
anyway even if memcpy() does the job.

In addition, since perf tool builds with -Werror, it would fire with:

  util/intel-pt-decoder/../../../arch/x86/lib/insn.c: In function '__insn_get_emulate_prefix':
  tools/include/../include/asm-generic/unaligned.h:10:15: error: packed attribute is unnecessary [-Werror=packed]
     10 |  const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr); \

because -Werror=packed would complain if the packed attribute would have
no effect on the layout of the structure.

In this case, that is intentional so disable the warning only for that
compilation unit.

That part is Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>

No functional changes.

Fixes: 0e693f6050c8 ("x86/insn, tools/x86: Fix undefined behavior due to potential unaligned accesses")
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Tested-by: Stephen Rothwell <sfr@canb.auug.org.au>
Link: https://lkml.kernel.org/r/YVSsIkj9Z29TyUjE@zn.tnic
arch/x86/lib/insn.c
tools/arch/x86/lib/insn.c
tools/include/asm-generic/unaligned.h [new file with mode: 0644]
tools/perf/util/intel-pt-decoder/Build