|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 4/9] ioreq-server: on-demand creation of ioreq server
>>> On 08.05.14 at 15:23, <paul.durrant@xxxxxxxxxx> wrote:
> +static int hvm_ioreq_server_map_pages(struct hvm_ioreq_server *s)
> +{
> + struct domain *d = s->domain;
> + unsigned long pfn;
> + int rc;
> +
> + pfn = d->arch.hvm_domain.params[HVM_PARAM_IOREQ_PFN];
> + rc = hvm_map_ioreq_page(s, 0, pfn);
> + if ( rc )
> + goto fail1;
> +
> + pfn = d->arch.hvm_domain.params[HVM_PARAM_BUFIOREQ_PFN];
> + rc = hvm_map_ioreq_page(s, 1, pfn);
> + if ( rc )
> + goto fail2;
> +
> + return 0;
> +
> +fail2:
> + hvm_unmap_ioreq_page(s, 0);
> +
> +fail1:
> + return rc;
> +}
I thought we settled on permitting goto for _complex_ error handling, not
trivial cases like this.
> +static void hvm_destroy_ioreq_server(struct domain *d)
> +{
> + struct hvm_ioreq_server *s;
> +
> + domain_pause(d);
> + spin_lock(&d->arch.hvm_domain.ioreq_server_lock);
> +
> + s = d->arch.hvm_domain.ioreq_server;
> + if ( !s )
> + goto done;
> +
> + d->arch.hvm_domain.ioreq_server = NULL;
> +
> + hvm_ioreq_server_deinit(s);
> +
> + done:
Again.
> + spin_unlock(&d->arch.hvm_domain.ioreq_server_lock);
> + domain_unpause(d);
> +
> + if ( s )
> + xfree(s);
Pointless if().
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |