lkml.org 
[lkml]   [2020]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v3 51/75] x86/sev-es: Handle MMIO events
    On Tue, Apr 28, 2020 at 05:17:01PM +0200, Joerg Roedel wrote:
    > +static enum es_result vc_do_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt,
    > + unsigned int bytes, bool read)
    > +{
    > + u64 exit_code, exit_info_1, exit_info_2;
    > + unsigned long ghcb_pa = __pa(ghcb);
    > + void __user *ref;
    > +
    > + ref = insn_get_addr_ref(&ctxt->insn, ctxt->regs);
    > + if (ref == (void __user *)-1L)
    > + return ES_UNSUPPORTED;
    > +
    > + exit_code = read ? SVM_VMGEXIT_MMIO_READ : SVM_VMGEXIT_MMIO_WRITE;
    > +
    > + exit_info_1 = vc_slow_virt_to_phys(ghcb, (unsigned long)ref);
    > + exit_info_2 = bytes; /* Can never be greater than 8 */

    No trailing comments pls - put them over the line.

    > + ghcb->save.sw_scratch = ghcb_pa + offsetof(struct ghcb, shared_buffer);
    > +
    > + return sev_es_ghcb_hv_call(ghcb, ctxt, exit_code, exit_info_1, exit_info_2);
    > +}
    > +
    > +static enum es_result vc_handle_mmio_twobyte_ops(struct ghcb *ghcb,
    > + struct es_em_ctxt *ctxt)
    > +{
    > + struct insn *insn = &ctxt->insn;
    > + unsigned int bytes = 0;
    > + enum es_result ret;
    > + int sign_byte;
    > + long *reg_data;
    > +
    > + switch (insn->opcode.bytes[1]) {
    > + /* MMIO Read w/ zero-extension */
    > + case 0xb6:
    > + bytes = 1;
    > + /* Fallthrough */

    I'm guessing we're supposed to annotate it this way now:

    WARNING: Prefer 'fallthrough;' over fallthrough comment
    #139: FILE: arch/x86/kernel/sev-es.c:504:
    + /* Fallthrough */


    > + case 0xb7:
    > + if (!bytes)
    > + bytes = 2;
    > +
    > + ret = vc_do_mmio(ghcb, ctxt, bytes, true);
    > + if (ret)
    > + break;
    > +
    > + /* Zero extend based on operand size */
    > + reg_data = vc_insn_get_reg(ctxt);

    That function can return NULL - you need to test reg_data. Ditto for all
    its invocations.

    --
    Regards/Gruss,
    Boris.

    https://people.kernel.org/tglx/notes-about-netiquette

    \
     
     \ /
      Last update: 2020-05-25 10:03    [W:4.319 / U:1.624 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site