32-on-64: Fix error handling for XENMEM_decrease_reservation.
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 13 Jun 2008 12:47:28 +0000 (13:47 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 13 Jun 2008 12:47:28 +0000 (13:47 +0100)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/common/compat/memory.c

index 491a9ce56831ac0dd34b9c6c4aa17ecfa0b63da6..17519f5688fee843827692d9847be795e638b04c 100644 (file)
@@ -250,7 +250,7 @@ int compat_memory_op(unsigned int cmd, XEN_GUEST_HANDLE(void) compat)
         case XENMEM_decrease_reservation:
         case XENMEM_populate_physmap:
             end_extent = split >= 0 ? rc : cmd >> MEMOP_EXTENT_SHIFT;
-            if ( op != XENMEM_decrease_reservation &&
+            if ( (op != XENMEM_decrease_reservation) &&
                  !guest_handle_is_null(nat.rsrv->extent_start) )
             {
                 for ( ; start_extent < end_extent; ++start_extent )
@@ -276,13 +276,14 @@ int compat_memory_op(unsigned int cmd, XEN_GUEST_HANDLE(void) compat)
                         break;
                     }
                 }
-
-                /* Bail if there was an error. */
-                if ( (split >= 0) && (end_extent != nat.rsrv->nr_extents) )
-                    split = 0;
             }
             else
+            {
                 start_extent = end_extent;
+            }
+            /* Bail if there was an error. */
+            if ( (split >= 0) && (end_extent != nat.rsrv->nr_extents) )
+                split = 0;
             break;
 
         case XENMEM_exchange: