From c4f3fc12cd9706f7593016d4daf930cd50f0af32 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Fri, 29 Mar 2019 16:51:12 +0000 Subject: [PATCH] xen/cpupool: Fold error paths in cpupool_create() The compiler can't fold because of the write to *perr in the first hunk. No functional change, but slightly better compiled code. Signed-off-by: Andrew Cooper Reviewed-by: Juergen Gross --- xen/common/cpupool.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c index 4d3adbdd8d..d66b541a94 100644 --- a/xen/common/cpupool.c +++ b/xen/common/cpupool.c @@ -236,10 +236,8 @@ static struct cpupool *cpupool_create( { if ( (*q)->cpupool_id == poolid ) { - spin_unlock(&cpupool_lock); - free_cpupool_struct(c); *perr = -EEXIST; - return NULL; + goto err; } c->next = *q; } @@ -253,11 +251,7 @@ static struct cpupool *cpupool_create( { c->sched = scheduler_alloc(sched_id, perr); if ( c->sched == NULL ) - { - spin_unlock(&cpupool_lock); - free_cpupool_struct(c); - return NULL; - } + goto err; } c->gran = opt_sched_granularity; @@ -270,6 +264,11 @@ static struct cpupool *cpupool_create( *perr = 0; return c; + + err: + spin_unlock(&cpupool_lock); + free_cpupool_struct(c); + return NULL; } /* * destroys the given cpupool -- 2.39.5