|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/4] tools/libxc: Avoid generating inappropriate zero-length records
On Thu, Jul 21, 2016 at 06:17:36PM +0100, Andrew Cooper wrote:
> It was never intended for records such as these to be sent with zero content.
>
Wouldn't it be better to modify write_split_record to ignore zero
content instead of patching up different places?
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> ---
> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> CC: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> tools/libxc/xc_sr_save_x86_hvm.c | 4 ++++
> tools/libxc/xc_sr_save_x86_pv.c | 12 ++++++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/tools/libxc/xc_sr_save_x86_hvm.c
> b/tools/libxc/xc_sr_save_x86_hvm.c
> index ba50a43..5401bf9 100644
> --- a/tools/libxc/xc_sr_save_x86_hvm.c
> +++ b/tools/libxc/xc_sr_save_x86_hvm.c
> @@ -112,6 +112,10 @@ static int write_hvm_params(struct xc_sr_context *ctx)
> }
> }
>
> + /* No params? Skip this record. */
> + if ( hdr.count == 0 )
> + return 0;
> +
> rc = write_split_record(ctx, &rec, entries, hdr.count *
> sizeof(*entries));
> if ( rc )
> PERROR("Failed to write HVM_PARAMS record");
> diff --git a/tools/libxc/xc_sr_save_x86_pv.c b/tools/libxc/xc_sr_save_x86_pv.c
> index 4a29460..5fb9f2f 100644
> --- a/tools/libxc/xc_sr_save_x86_pv.c
> +++ b/tools/libxc/xc_sr_save_x86_pv.c
> @@ -607,6 +607,10 @@ static int write_one_vcpu_extended(struct xc_sr_context
> *ctx, uint32_t id)
> return -1;
> }
>
> + /* No content? Skip the record. */
> + if ( domctl.u.ext_vcpucontext.size == 0 )
> + return 0;
> +
> return write_split_record(ctx, &rec, &domctl.u.ext_vcpucontext,
> domctl.u.ext_vcpucontext.size);
> }
> @@ -662,6 +666,10 @@ static int write_one_vcpu_xsave(struct xc_sr_context
> *ctx, uint32_t id)
> goto err;
> }
>
> + /* No xsave state? Skip this record. */
> + if ( domctl.u.vcpuextstate.size == 0 )
> + goto out;
> +
> rc = write_split_record(ctx, &rec, buffer, domctl.u.vcpuextstate.size);
> if ( rc )
> goto err;
> @@ -728,6 +736,10 @@ static int write_one_vcpu_msrs(struct xc_sr_context
> *ctx, uint32_t id)
> goto err;
> }
>
> + /* No MSRs? Skip this record. */
> + if ( domctl.u.vcpu_msrs.msr_count == 0 )
> + goto out;
> +
> rc = write_split_record(ctx, &rec, buffer,
> domctl.u.vcpu_msrs.msr_count *
> sizeof(xen_domctl_vcpu_msr_t));
> --
> 2.1.4
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |