|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Locking on vm-event operations (monitor)
On 07/22/2016 03:32 PM, Corneliu ZUZU wrote:
>>> Look @ hvm_do_resume():
>>>
>>> 1. If you, as a toolstack user, get at sane step no. 6: "Uninitialize
>>> everything (no events are possible here because of steps 4-5)."
>>> 2. But just before you do that, a hvm_do_resume() happens on an
>>> arbitrary vCPU of the domain and gets to this point:
>>>
>>> if ( unlikely(v->arch.vm_event) )
>>> {
>>> // ---> let's say you are now at this point, just after the
>>> above non-NULL check
>>> struct monitor_write_data *w = &v->arch.vm_event->write_data;
>>>
>>> 3. and before proceeding further, the uninitialization sequence
>>> _completes_, i.e. this was done in vm_event_cleanup_domain():
>>>
>>> for_each_vcpu ( d, v )
>>> {
>>> xfree(v->arch.vm_event);
>>> v->arch.vm_event = NULL;
>>> }
>>>
>>> 4. and then in hvm_do_resume() this gets to be done:
>>>
>>> struct monitor_write_data *w = &v->arch.vm_event->write_data;
>>>
>>> [...]
>>>
>>> if ( w->do_write.msr )
>>> {
>>> hvm_msr_write_intercept(w->msr, w->value, 0);
>>> w->do_write.msr = 0;
>>> }
>>>
>>> then you'll have a beautiful NULL-pointer access hypervisor crash.
>> As I've said before, of course I agree with that
>
> Sorry, I thought by your previous statement "I assume that the reason
> why this has not been addressed in the past is that introspection
> applications are expected to be well-behaved" you were inferring that
> with a 'sane' toolstack user, as you defined it, it won't be possible to
> have a hypervisor crash.
I did (please see below).
>> - isn't that what a
>> previous patch you've submitted addressed?
>
> I'm not sure what patch you're referring to, I don't remember ever
> addressing these issues before..
I am talking about your patch "x86/monitor: fix: don't compromise a
monitor_write_data with pending CR writes", which, if I'm not mistaken,
addresses the above problem (since we won't xfree(v->arch.vm_event) on
monitor uninit anymore).
With the above problem fixed, the workflow I suggested should be fine.
Again, I would prefer things to be rock solid, so personally I encourage
your patch and hope we get it in.
Thanks,
Razvan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |