x86/sev-es: Use new for_each_insn_prefix() macro to loop over prefixes bytes
authorMasami Hiramatsu <mhiramat@kernel.org>
Thu, 3 Dec 2020 04:51:01 +0000 (13:51 +0900)
committerBorislav Petkov <bp@suse.de>
Sun, 6 Dec 2020 09:03:08 +0000 (10:03 +0100)
commit84da009f06e60cf59d5e861f8e2101d2d3885517
tree65cc9d31679964de585d62db7a701ee112e1e703
parent12cb908a11b2544b5f53e9af856e6b6a90ed5533
x86/sev-es: Use new for_each_insn_prefix() macro to loop over prefixes bytes

Since insn.prefixes.nbytes can be bigger than the size of
insn.prefixes.bytes[] when a prefix is repeated, the proper
check must be:

  insn.prefixes.bytes[i] != 0 and i < 4

instead of using insn.prefixes.nbytes. Use the new
for_each_insn_prefix() macro which does it correctly.

Debugged by Kees Cook <keescook@chromium.org>.

 [ bp: Massage commit message. ]

Fixes: 25189d08e516 ("x86/sev-es: Add support for handling IOIO exceptions")
Reported-by: syzbot+9b64b619f10f19d19a7c@syzkaller.appspotmail.com
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/160697106089.3146288.2052422845039649176.stgit@devnote2
arch/x86/boot/compressed/sev-es.c