[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Inconsistent use of set_context_data()?



>>> On 05.10.16 at 14:29, <JBeulich@xxxxxxxx> wrote:
>>>> On 05.10.16 at 14:22, <rcojocaru@xxxxxxxxxxxxxxx> wrote:
>>> what's the point of this being used by hvmemul_read() and
>>> hvmemul_cmpxchg(), but (namely but not limited to) not by
>>> hvmemul_write()?
>> 
>> To do introspection work, we sometimes need to modify the guest memory,
>> and there are cases, namely during hibernate / resume of Windows guests,
>> when we need to serve the "old" version of that memory to the current
>> instruction reading from it for the process to work reliably.
>> 
>> The design choice here has been that the introspection application is
>> smart enough to handle writes (after all, it is the one managing the
>> buffer sent via vm_event reply), so it is intended behaviour.
> 
> Well - the confusing thing is that for cmpxchg it's the value to be
> written which gets altered, not the value to be compared against,
> i.e. it acts as if set_context_data() was also intended to be
> present in hvmemul_write().

And note how this is the only case where caller supplied data gets
modified - after all at least the p_new pointer should really be const
(for p_old one might argue that upon failure the old value could be
passed back to the caller). And if that altering of caller data was
intended, then there's at least one case where it doesn't take
effect right now: protmode_load_seg()'s updating of the accessed
bit or-s in a_flag into the local copy instead of using new_desc_b.

IOW - I don't really understand what (consistent) behavior is
expected here.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.