| 
    
 [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  |