aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/cpupool.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2012-09-03 09:40:38 +0200
committerJan Beulich <jbeulich@suse.com>2012-09-03 09:40:38 +0200
commit8e66050e3223a9aa55ca29ec32b2e78c3e69e085 (patch)
tree22bf4997c2366565228de8bb0a31c0eaf4873be5 /xen/common/cpupool.c
parentf1297904185f73262522b6277252bfb699644766 (diff)
downloadxen-8e66050e3223a9aa55ca29ec32b2e78c3e69e085.tar.gz
xen-8e66050e3223a9aa55ca29ec32b2e78c3e69e085.tar.bz2
xen-8e66050e3223a9aa55ca29ec32b2e78c3e69e085.zip
make domain_create() return a proper error code
While triggered by the XSA-9 fix, this really is of more general use; that fix just pointed out very sharply that the current situation with all domain creation failures reported to user (tools) space as -ENOMEM is very unfortunate (actively misleading users _and_ support personnel). Pull over the pointer <-> error code conversion infrastructure from Linux, and use it in domain_create() and all it callers. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/common/cpupool.c')
-rw-r--r--xen/common/cpupool.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index c9cc123a40..c036c2c841 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -370,14 +370,18 @@ out:
int cpupool_add_domain(struct domain *d, int poolid)
{
struct cpupool *c;
- int rc = 1;
+ int rc;
int n_dom = 0;
if ( poolid == CPUPOOLID_NONE )
return 0;
spin_lock(&cpupool_lock);
c = cpupool_find_by_id(poolid);
- if ( (c != NULL) && cpumask_weight(c->cpu_valid) )
+ if ( c == NULL )
+ rc = -ESRCH;
+ else if ( !cpumask_weight(c->cpu_valid) )
+ rc = -ENODEV;
+ else
{
c->n_dom++;
n_dom = c->n_dom;