x86/boot/compressed/sev-es: Convert to insn_decode()
authorBorislav Petkov <bp@suse.de>
Thu, 5 Nov 2020 16:53:20 +0000 (17:53 +0100)
committerBorislav Petkov <bp@suse.de>
Mon, 15 Mar 2021 10:18:35 +0000 (11:18 +0100)
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
arch/x86/boot/compressed/sev-es.c

index 27826c265aab484770a3b82b7cde24116cb66d7b..801c626fc3d495129a56548573c098b3d3ff96e3 100644 (file)
@@ -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,