Dne pátek 07 Leden 2011 20:18:29 Dave Anderson napsal(a):
----- Original Message -----
> On Friday 07 of January 2011 16:27:55 Dave Anderson wrote:
> > ----- Original Message -----
> >
> > > The 'vcpu' field changed from a fixed array to a pointer to an
array.
> > > Change xen_hyper_store_domain_context to account for this change.
> >
> > Presuming this tests OK on older hypervisor dumps, this looks OK.
> > Queued for the next release based upon testing.
>
> Hi Dave,
>
> older Xen hypervisors didn't have the "max_vcpus" field in struct
domain,
> so there is in fact no change for them.
>
> However, thinking about it some more, this might be affected by the
> increase of XEN_HYPER_MAX_VIRT_CPUS. Although I haven't seen a failure,
> let me check first whether a crash session on a dump from Xen 3.3
> attempts to read past array boundaries.
As it turns out, my tests didn't work out on any of my sample hypervisor
dumps, presumably due to this patch, the XEN_HYPER_MAX_VIRT_CPUS patch, or
both (?).
Hi Dave,
yes, it's because of the XEN_HYPER_MAX_VIRT_CPUS. The vcpu field is declared
as:
struct vcpu *vcpu[MAX_VIRT_CPUS];
for Xen-3.3, but it is a pointer to a dynamically allocated array in Xen4. So,
this is exactly what I was afraid of, and crash reads past the array
boundaries in xen_hyper_store_domain_context.
OTOH I don't like the idea of hard-wiring the MAX_VIRT_CPUS constant in crash,
because it's one of the easiest tweaks one could do on the Xen kernel (well,
32 VCPUs isn't really much).
Let me see if I can find a better solution,
Petr