Skip to content

Commit

Permalink
x86/sev-es: Fix SEV-ES OUT/IN immediate opcode vc handling
Browse files Browse the repository at this point in the history
The IN and OUT instructions with port address as an immediate operand
only use an 8-bit immediate (imm8). The current VC handler uses the
entire 32-bit immediate value but these instructions only set the first
bytes.

Cast the operand to an u8 for that.

 [ bp: Massage commit message. ]

Fixes: 25189d0 ("x86/sev-es: Add support for handling IOIO exceptions")
Signed-off-by: Peter Gonda <[email protected]>
Signed-off-by: Borislav Petkov <[email protected]>
Acked-by: David Rientjes <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
  • Loading branch information
pgonda authored and suryasaimadhu committed Jan 5, 2021
1 parent d1c5246 commit a8f7e08
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions arch/x86/kernel/sev-es-shared.c
Original file line number Diff line number Diff line change
Expand Up @@ -305,14 +305,14 @@ static enum es_result vc_ioio_exitinfo(struct es_em_ctxt *ctxt, u64 *exitinfo)
case 0xe4:
case 0xe5:
*exitinfo |= IOIO_TYPE_IN;
*exitinfo |= (u64)insn->immediate.value << 16;
*exitinfo |= (u8)insn->immediate.value << 16;
break;

/* OUT immediate opcodes */
case 0xe6:
case 0xe7:
*exitinfo |= IOIO_TYPE_OUT;
*exitinfo |= (u64)insn->immediate.value << 16;
*exitinfo |= (u8)insn->immediate.value << 16;
break;

/* IN register opcodes */
Expand Down

0 comments on commit a8f7e08

Please sign in to comment.