[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [BUGFIX][PATCH 3/4] hvm_save_one: return correct data.
>>> On 12.12.13 at 01:56, Don Slutz <dslutz@xxxxxxxxxxx> wrote: > From: Don Slutz <dslutz@xxxxxxxxxxx> > > It is possible that hvm_sr_handlers[typecode].save does not use all > the provided room. In that case, using: > > instance * hvm_sr_handlers[typecode].size > > does not select the correct instance. Add code to search for the > correct instance. > > Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> But this needs to be cleaned up coding style wise and ... > --- a/xen/common/hvm/save.c > +++ b/xen/common/hvm/save.c > @@ -112,13 +112,27 @@ int hvm_save_one(struct domain *d, uint16_t typecode, > uint16_t instance, > d->domain_id, typecode); > rv = -EFAULT; > } > - else if ( copy_to_guest(handle, > - ctxt.data > - + (instance * hvm_sr_handlers[typecode].size) > - + sizeof (struct hvm_save_descriptor), > - hvm_sr_handlers[typecode].size > - - sizeof (struct hvm_save_descriptor)) ) > - rv = -EFAULT; > + else > + { > + uint32_t off; > + > + rv = -EBADSLT; > + for (off = 0; off < ctxt.cur; off += hvm_sr_handlers[typecode].size) > { > + struct hvm_save_descriptor *desc > + = (struct hvm_save_descriptor *)&ctxt.data[off]; .. this could be const, and the cast could simply be (void *), ... > + if (instance == desc->instance) { > + rv = 0; > + if ( copy_to_guest(handle, > + ctxt.data > + + off ... this doesn't need to be on a separate line, and ... > + + sizeof (struct hvm_save_descriptor), > + hvm_sr_handlers[typecode].size > + - sizeof (struct hvm_save_descriptor)) ) ... both these sizeof()s would now better be sizeof(*desc). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |