[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN][PATCH v3] x86: make Viridian support optional
On 18.09.2025 19:17, Grygorii Strashko wrote: > On 18.09.25 18:41, Jan Beulich wrote: >> On 16.09.2025 15:41, Grygorii Strashko wrote: >>> --- a/xen/arch/x86/hvm/viridian/viridian.c >>> +++ b/xen/arch/x86/hvm/viridian/viridian.c >>> @@ -1116,14 +1116,14 @@ static int cf_check viridian_save_domain_ctxt( >>> { >>> const struct domain *d = v->domain; >>> const struct viridian_domain *vd = d->arch.hvm.viridian; >>> - struct hvm_viridian_domain_context ctxt = { >>> - .hypercall_gpa = vd->hypercall_gpa.raw, >>> - .guest_os_id = vd->guest_os_id.raw, >>> - }; >>> + struct hvm_viridian_domain_context ctxt = {}; >>> >>> if ( !is_viridian_domain(d) ) >>> return 0; >> >> This check doesn't check for vd being non-NULL, so this still feels a little >> fragile, even if it looks correct now. > > Hm. May be I missing smth., but > - if is_viridian_domain(d) and viridian_domain_init() succeeded > then d->arch.hvm.viridian != NULL, like always > (otherwise domain will not be created) > > - if !is_viridian_domain() then code will not go further > > so I'm missing to see how !d->arch.hvm.viridian (!vd) can happen here. Well, as said - it feels a _little_ fragile, as it's not the NULL-ness of the pointer that is checked. >>> + ctxt.hypercall_gpa = vd->hypercall_gpa.raw; >>> + ctxt.guest_os_id = vd->guest_os_id.raw, >>> + >>> viridian_time_save_domain_ctxt(d, &ctxt); >>> viridian_synic_save_domain_ctxt(d, &ctxt); >>> >> >> Just below here we have viridian_load_domain_ctxt(), which I'm pretty sure >> now also needs to gain some check: Save records coming from user space, we >> can't really rely on there being none of this type for a non-Viridian domain. > > As per my understanding: > viridian_load_domain_ctxt() calls hvm_load_entry_zeroextend() which > should not succeed if context was not saved (which shouldn't happen for > !is_viridian_domain(d) case). I don't understand what you mean with "was not saved". To be free of security issues, we need to cope with any (bogus or not) record appearing. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |