[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] 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 (aliguori@xxxxxxxxxx)

--- xen-unstable/xen/common/dom0_ops.c~ 2005-03-08 22:12:28.000000000 -0600
+++ xen-unstable/xen/common/dom0_ops.c  2005-03-09 14:03:05.000000000 -0600
@@ -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);
         }

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.