diff options
author | Jan Beulich <jbeulich@suse.com> | 2012-09-03 09:40:38 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2012-09-03 09:40:38 +0200 |
commit | 8e66050e3223a9aa55ca29ec32b2e78c3e69e085 (patch) | |
tree | 22bf4997c2366565228de8bb0a31c0eaf4873be5 /xen/common/cpupool.c | |
parent | f1297904185f73262522b6277252bfb699644766 (diff) | |
download | xen-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.c | 8 |
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; |