From: Razvan Cojocaru <rcojocaru@bitdefender.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: kevin.tian@intel.com, wei.liu2@citrix.com,
ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com,
andrew.cooper3@citrix.com, tim@xen.org, xen-devel@lists.xen.org,
eddie.dong@intel.com, Aravind.Gopalakrishnan@amd.com,
jun.nakajima@intel.com, suravee.suthikulpanit@amd.com,
boris.ostrovsky@oracle.com, keir@xen.org,
ian.jackson@eu.citrix.com
Subject: Re: [PATCH V2 1/3] xen/vm_access: Support for memory-content hiding
Date: Fri, 26 Jun 2015 12:49:14 +0300 [thread overview]
Message-ID: <558D201A.9070905@bitdefender.com> (raw)
In-Reply-To: <558D2D01020000780008A06A@mail.emea.novell.com>
On 06/26/2015 11:44 AM, Jan Beulich wrote:
>>>> @@ -891,14 +934,37 @@ static int hvmemul_rep_outs(
>>>> >>> !!(ctxt->regs->eflags & X86_EFLAGS_DF), NULL);
>>>> >>> }
>>>> >>>
>>>> >>> -static int hvmemul_rep_movs(
>>>> >>> +static int hvmemul_rep_outs_set_context(
>>>> >>> + enum x86_segment src_seg,
>>>> >>> + unsigned long src_offset,
>>>> >>> + uint16_t dst_port,
>>>> >>> + unsigned int bytes_per_rep,
>>>> >>> + unsigned long *reps,
>>>> >>> + struct x86_emulate_ctxt *ctxt)
>>>> >>> +{
>>>> >>> + struct vcpu *curr = current;
>>>> >>> + unsigned int safe_bytes;
>>>> >>> +
>>>> >>> + if ( !curr->arch.vm_event.emul_read_data )
>>>> >>> + return X86EMUL_UNHANDLEABLE;
>>>> >>> +
>>>> >>> + safe_bytes = min_t(unsigned int, bytes_per_rep,
>>>> >>> + curr->arch.vm_event.emul_read_data->size);
>>>> >>> +
>>>> >>> + return hvmemul_do_pio(dst_port, reps, safe_bytes, 0, IOREQ_WRITE,
>>>> >>> + !!(ctxt->regs->eflags & X86_EFLAGS_DF),
>>>> >>> + curr->arch.vm_event.emul_read_data->data);
>>> >>
>>> >> This isn't consistent with e.g. rep_movs below - you shouldn't
>>> >> reduce the width of the operation.
>> >
>> > I agree, but to be honest I wasn't sure of how to better go about this,
>> > it seem a bit more involved that the rest of the cases. I could perhaps
>> > allocate a bytes_per_rep-sized buffer, memset() it to zero and then copy
>> > safe_bytes from curr->arch.vm_event.emul_read_data->data to the
>> > beginning of it?
> See above - you first need to define the model you want to follow,
> and then you need to handle this uniformly everywhere.
>
>>> >> Also - did I overlook where *reps gets forced to 1? If it's being
>>> >> done elsewhere, perhaps worth an ASSERT()?
>> >
>> > *reps got forced to 1 in hvmemul_rep_stos_set_context() in V1, I took
>> > that out as per your comments, please see:
>> >
>> > http://lists.xen.org/archives/html/xen-devel/2015-05/msg01054.html
> That's fine, but then you can't simply ignore it in the safe_bytes
> calculation.
Sorry, I don't follow - I did truncate the data if bytes_per_rep >
curr->arch.vm_event.emul_read_data->size. But I'm passing reps on
untouched to hvmemul_do_pio(). Did I misunderstand the hvmemul_do_pio()
code? Should I pass a (*reps * bytes_per_rep) sized buffer to
hvmemul_do_pio() when its last parameter is != NULL?
Thanks,
Razvan
next prev parent reply other threads:[~2015-06-26 9:49 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-15 9:03 Vm_event memory introspection helpers Razvan Cojocaru
2015-06-15 9:03 ` [PATCH V2 1/3] xen/vm_access: Support for memory-content hiding Razvan Cojocaru
2015-06-25 15:57 ` Jan Beulich
2015-06-26 8:22 ` Razvan Cojocaru
2015-06-26 8:44 ` Jan Beulich
2015-06-26 9:49 ` Razvan Cojocaru [this message]
2015-06-26 9:59 ` Jan Beulich
2015-06-15 9:03 ` [PATCH V2 2/3] xen/vm_event: Support for guest-requested events Razvan Cojocaru
2015-06-24 14:56 ` Razvan Cojocaru
2015-06-24 15:03 ` Jan Beulich
2015-06-25 7:55 ` Razvan Cojocaru
2015-06-25 8:37 ` Jan Beulich
2015-06-25 9:09 ` Razvan Cojocaru
2015-06-26 7:02 ` Jan Beulich
2015-06-26 7:17 ` Razvan Cojocaru
2015-06-26 8:45 ` Jan Beulich
2015-06-30 14:48 ` Lengyel, Tamas
2015-06-30 15:22 ` Razvan Cojocaru
2015-07-01 8:24 ` Razvan Cojocaru
2015-07-06 10:26 ` Jan Beulich
2015-07-06 13:46 ` Lengyel, Tamas
2015-06-30 14:23 ` Razvan Cojocaru
2015-07-06 10:27 ` Jan Beulich
2015-07-06 14:35 ` Razvan Cojocaru
2015-06-15 9:03 ` [PATCH V2 3/3] xen/vm_event: Deny register writes if refused by vm_event reply Razvan Cojocaru
2015-06-26 8:28 ` Jan Beulich
2015-06-26 9:17 ` Razvan Cojocaru
2015-06-26 9:39 ` Jan Beulich
2015-06-26 10:33 ` Razvan Cojocaru
2015-07-01 15:21 ` Razvan Cojocaru
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=558D201A.9070905@bitdefender.com \
--to=rcojocaru@bitdefender.com \
--cc=Aravind.Gopalakrishnan@amd.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=eddie.dong@intel.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jun.nakajima@intel.com \
--cc=keir@xen.org \
--cc=kevin.tian@intel.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=tim@xen.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.