[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v10] x86/emulate: Send vm_event from emulate
On 17.09.2019 16:11, Alexandru Stefan ISAILA wrote: > > > On 17.09.2019 11:09, Jan Beulich wrote: >> On 17.09.2019 09:52, Alexandru Stefan ISAILA wrote: >>> On 16.09.2019 18:58, Jan Beulich wrote: >>>> On 16.09.2019 10:10, Alexandru Stefan ISAILA wrote: >>>>> --- a/xen/arch/x86/hvm/hvm.c >>>>> +++ b/xen/arch/x86/hvm/hvm.c >>>>> @@ -3224,6 +3224,14 @@ static enum hvm_translation_result __hvm_copy( >>>>> return HVMTRANS_bad_gfn_to_mfn; >>>>> } >>>>> >>>>> + if ( unlikely(v->arch.vm_event) && >>>>> + v->arch.vm_event->send_event && >>>>> + hvm_monitor_check_p2m(addr, gfn, pfec, npfec_kind_with_gla) >>>>> ) >>>>> + { >>>>> + put_page(page); >>>>> + return HVMTRANS_gfn_paged_out; >>>> >>>> I'm sorry, but there is _still_ no comment next to this apparent >>>> mis-use of HVMTRANS_gfn_paged_out. >>> >>> I will add this comment here: >>> >>> "/* >>> * In case a vm event was sent return paged_out so the emulation will >>> * stop with no side effect >>> */" >> >> First of all - why "was sent"? The event is yet to be sent, isn't it? > > Yes it should state "if the event is sent". "is sent" is still not indicating this is something yet to happen. "is to be sent" would be to me (caveat - I'm not a native speaker). >> And then I'm afraid this still isn't enough. __hvm_copy() gets used >> for many purposes. For example, while looking into this again when >> preparing the reply here, I've noticed that above you may wrongly >> call hvm_monitor_check_p2m() with npfec_kind_with_gla - there's no >> linear address when HVMCOPY_linear is not set. If, while putting > > You are right, a check for HVMCOPY_linear should go in the if so we are > sure that it is called with a linear address only. > >> together what the comment needs to explain (i.e. everything that >> can't be implied from the code you add), you considered all cases >> you should have noticed this yourself. > > With this new check in place (HVMCOPY_linear) __hvm_copy() will be > called from linear_read() linear_write() where it will pass down > X86EMUL_RETRY. > > The comment can change to: > "If a event is sent return paged_out. The emulation will have no side > effect and will return X86EMUL_RETRY" I'm sorry to be a pain in your neck, but no, this still is not sufficient imo. The comment, whatever wording you choose, should make clear that you have understood the possible effects of using a suspicious return value, and it should also make clear to readers that this is in fact not going to cause a problem _for any caller_. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |