Cleanup error paths in xen/common/dom0_ops.c
PATCH 1/1 Cleanup error paths in xen/common/dom0_ops.c
I've written an automated dom0_op generator in an effort to test the libxc rewrite. The tool is still awfully primative and the rewrite is not yet complete but I wanted to post fixes for some bugs the tool found so I wouldn't forget.
The first makes sure that builddomain returns ESRCH when passed an invalid domain ID (this is what every other dom0_op returns).
The second makes sure that unpausedomain returns EINVAL if you try to unpause yourself. This is the behavior of pausedomain and is a bit more sane than just returning 0.
I've tested this on today's unstable (able to boot and create domains with Xend just as before).
Regards,
Anthony Liguori
Signed-off-by Anthony Liguori ([email protected])
xen/common/dom0_ops.c renamed from xen/common/dom0_ops.c~ +7 -4
@@ -114,7 +114,7 @@case DOM0_BUILDDOMAIN : {struct domain *d =find_domain_by_id (op->u.builddomain.domain); - ret = -EINVAL ; + ret = -ESRCH ;if ( d !=NULL ) { ret =final_setup_guest (d, &op->u.builddomain);
@@ -147,10 +147,13 @@if ( d !=NULL ) { ret = -EINVAL ; -if (test_bit (DF_CONSTRUCTED , &d->d_flags) ) +if ( d != current->domain ) { -domain_unpause_by_systemcontroller (d); - ret =0 ; +if (test_bit (DF_CONSTRUCTED , &d->d_flags) ) + { +domain_unpause_by_systemcontroller (d); + ret =0 ; + } }put_domain (d); }