diff options
author | Borislav Petkov <bp@suse.de> | 2020-11-05 17:53:20 +0100 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2021-03-15 11:18:35 +0100 |
commit | 514ef77607b9ff184c11b88e8f100bc27f07460d (patch) | |
tree | 3a0c047d3d204ad2d645979ac15802ad5bfdf0c8 /arch/x86/boot | |
parent | x86/insn-eval: Handle return values from the decoder (diff) | |
download | linux-514ef77607b9ff184c11b88e8f100bc27f07460d.tar.xz linux-514ef77607b9ff184c11b88e8f100bc27f07460d.zip |
x86/boot/compressed/sev-es: Convert to insn_decode()
Other than simplifying the code there should be no functional changes
resulting from this.
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210304174237.31945-7-bp@alien8.de
Diffstat (limited to 'arch/x86/boot')
-rw-r--r-- | arch/x86/boot/compressed/sev-es.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/x86/boot/compressed/sev-es.c b/arch/x86/boot/compressed/sev-es.c index 27826c265aab..801c626fc3d4 100644 --- a/arch/x86/boot/compressed/sev-es.c +++ b/arch/x86/boot/compressed/sev-es.c @@ -78,16 +78,15 @@ static inline void sev_es_wr_ghcb_msr(u64 val) static enum es_result vc_decode_insn(struct es_em_ctxt *ctxt) { char buffer[MAX_INSN_SIZE]; - enum es_result ret; + int ret; memcpy(buffer, (unsigned char *)ctxt->regs->ip, MAX_INSN_SIZE); - insn_init(&ctxt->insn, buffer, MAX_INSN_SIZE, 1); - insn_get_length(&ctxt->insn); + ret = insn_decode(&ctxt->insn, buffer, MAX_INSN_SIZE, INSN_MODE_64); + if (ret < 0) + return ES_DECODE_FAILED; - ret = ctxt->insn.immediate.got ? ES_OK : ES_DECODE_FAILED; - - return ret; + return ES_OK; } static enum es_result vc_write_mem(struct es_em_ctxt *ctxt, |