[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 1/2] xen/gnttab: Clean up goto tangle in grant_table_init()
No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: George Dunlap <George.Dunlap@xxxxxxxxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Tim Deegan <tim@xxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Juergen Gross <jgross@xxxxxxxx> --- xen/common/grant_table.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 71706f5..2e4b5e7 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -1732,60 +1732,59 @@ gnttab_grow_table(struct domain *d, unsigned int req_nr_frames) static int grant_table_init(struct domain *d, struct grant_table *gt) { - int ret; + int ret = -ENOMEM; grant_write_lock(gt); if ( gt->active ) { ret = -EBUSY; - goto unlock; + goto out; } /* Active grant table. */ gt->active = xzalloc_array(struct active_grant_entry *, max_nr_active_grant_frames); if ( gt->active == NULL ) - goto no_mem; + goto out; /* Tracking of mapped foreign frames table */ gt->maptrack = vzalloc(max_maptrack_frames * sizeof(*gt->maptrack)); if ( gt->maptrack == NULL ) - goto no_mem; + goto out; /* Shared grant table. */ gt->shared_raw = xzalloc_array(void *, max_grant_frames); if ( gt->shared_raw == NULL ) - goto no_mem; + goto out; /* Status pages for grant table - for version 2 */ gt->status = xzalloc_array(grant_status_t *, grant_to_status_frames(max_grant_frames)); if ( gt->status == NULL ) - goto no_mem; + goto out; ret = gnttab_init_arch(gt); if ( ret ) goto out; /* gnttab_grow_table() allocates a min number of frames, so 0 is okay. */ - if ( gnttab_grow_table(d, 0) ) - goto unlock; + ret = gnttab_grow_table(d, 0) ? 0 : -ENOMEM; - no_mem: - ret = -ENOMEM; out: - gnttab_destroy_arch(gt); - xfree(gt->status); - gt->status = NULL; - xfree(gt->shared_raw); - gt->shared_raw = NULL; - vfree(gt->maptrack); - gt->maptrack = NULL; - xfree(gt->active); - gt->active = NULL; + if ( ret ) + { + gnttab_destroy_arch(gt); + xfree(gt->status); + gt->status = NULL; + xfree(gt->shared_raw); + gt->shared_raw = NULL; + vfree(gt->maptrack); + gt->maptrack = NULL; + xfree(gt->active); + gt->active = NULL; + } - unlock: grant_write_unlock(gt); return ret; -- 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 |