[2/1] libxc: Drop other examples of the 'goto x; } else if' antipattern
diff mbox series

Message ID 20191219182442.7232-1-andrew.cooper3@citrix.com
State New
Headers show
Series
  • libxc/restore: Fix data auditing in handle_x86_pv_info()
Related show

Commit Message

Andrew Cooper Dec. 19, 2019, 6:24 p.m. UTC
None of these are buggy, but the resulting code is more robust.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Ian Jackson <Ian.Jackson@citrix.com>
CC: Wei Liu <wl@xen.org>
---
 tools/libxc/xc_dom_core.c           |  3 ++-
 tools/libxc/xc_misc.c               |  3 ++-
 tools/libxc/xc_resource.c           |  7 ++++---
 tools/libxc/xc_sr_common.c          |  3 ++-
 tools/libxc/xc_sr_restore.c         | 18 ++++++++++++------
 tools/libxc/xc_sr_restore_x86_hvm.c |  4 +++-
 tools/libxc/xc_sr_restore_x86_pv.c  | 33 ++++++++++++++++++---------------
 7 files changed, 43 insertions(+), 28 deletions(-)

Comments

Ian Jackson Dec. 20, 2019, 12:15 p.m. UTC | #1
Andrew Cooper writes ("[PATCH 2/1] libxc: Drop other examples of the 'goto x; } else if' antipattern"):
> None of these are buggy, but the resulting code is more robust.
> 
> No functional change.

Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>

Patch
diff mbox series

diff --git a/tools/libxc/xc_dom_core.c b/tools/libxc/xc_dom_core.c
index 9bd04cb2d5..73fe09fe18 100644
--- a/tools/libxc/xc_dom_core.c
+++ b/tools/libxc/xc_dom_core.c
@@ -225,7 +225,8 @@  void *xc_dom_malloc_filemap(struct xc_dom_image *dom,
                      "tried to map file which is too large");
         goto err;
     }
-    else if ( !*size )
+
+    if ( !*size )
     {
         xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
                      "'%s': zero length file", filename);
diff --git a/tools/libxc/xc_misc.c b/tools/libxc/xc_misc.c
index 8e60b6e9f0..b8eebd91e4 100644
--- a/tools/libxc/xc_misc.c
+++ b/tools/libxc/xc_misc.c
@@ -794,7 +794,8 @@  int xc_livepatch_list(xc_interface *xch, unsigned int max, unsigned int start,
             xc_hypercall_bounce_post(xch, len);
             continue;
         }
-        else if ( rc < 0 ) /* For all other errors we bail out. */
+
+        if ( rc < 0 ) /* For all other errors we bail out. */
             break;
 
         if ( !version )
diff --git a/tools/libxc/xc_resource.c b/tools/libxc/xc_resource.c
index 3abadbdcfc..3394cc1833 100644
--- a/tools/libxc/xc_resource.c
+++ b/tools/libxc/xc_resource.c
@@ -133,10 +133,11 @@  int xc_resource_op(xc_interface *xch, uint32_t nr_ops, xc_resource_op_t *ops)
 {
     if ( nr_ops == 1 )
         return xc_resource_op_one(xch, ops);
-    else if ( nr_ops > 1 )
+
+    if ( nr_ops > 1 )
         return xc_resource_op_multi(xch, nr_ops, ops);
-    else
-        return -1;
+
+    return -1;
 }
 
 /*
diff --git a/tools/libxc/xc_sr_common.c b/tools/libxc/xc_sr_common.c
index 79b9c3e940..6b887b3053 100644
--- a/tools/libxc/xc_sr_common.c
+++ b/tools/libxc/xc_sr_common.c
@@ -102,7 +102,8 @@  int read_record(struct xc_sr_context *ctx, int fd, struct xc_sr_record *rec)
         PERROR("Failed to read Record Header from stream");
         return -1;
     }
-    else if ( rhdr.length > REC_LENGTH_MAX )
+
+    if ( rhdr.length > REC_LENGTH_MAX )
     {
         ERROR("Record (0x%08x, %s) length %#x exceeds max (%#x)", rhdr.type,
               rec_type_to_str(rhdr.type), rhdr.length, REC_LENGTH_MAX);
diff --git a/tools/libxc/xc_sr_restore.c b/tools/libxc/xc_sr_restore.c
index 1ac404b97b..98038096c7 100644
--- a/tools/libxc/xc_sr_restore.c
+++ b/tools/libxc/xc_sr_restore.c
@@ -28,18 +28,21 @@  static int read_headers(struct xc_sr_context *ctx)
         ERROR("Invalid marker: Got 0x%016"PRIx64, ihdr.marker);
         return -1;
     }
-    else if ( ihdr.id != IHDR_ID )
+
+    if ( ihdr.id != IHDR_ID )
     {
         ERROR("Invalid ID: Expected 0x%08x, Got 0x%08x", IHDR_ID, ihdr.id);
         return -1;
     }
-    else if ( ihdr.version != IHDR_VERSION )
+
+    if ( ihdr.version != IHDR_VERSION )
     {
         ERROR("Invalid Version: Expected %d, Got %d",
               IHDR_VERSION, ihdr.version);
         return -1;
     }
-    else if ( ihdr.options & IHDR_OPT_BIG_ENDIAN )
+
+    if ( ihdr.options & IHDR_OPT_BIG_ENDIAN )
     {
         ERROR("Unable to handle big endian streams");
         return -1;
@@ -345,12 +348,14 @@  static int handle_page_data(struct xc_sr_context *ctx, struct xc_sr_record *rec)
               rec->length, sizeof(*pages));
         goto err;
     }
-    else if ( pages->count < 1 )
+
+    if ( pages->count < 1 )
     {
         ERROR("Expected at least 1 pfn in PAGE_DATA record");
         goto err;
     }
-    else if ( rec->length < sizeof(*pages) + (pages->count * sizeof(uint64_t)) )
+
+    if ( rec->length < sizeof(*pages) + (pages->count * sizeof(uint64_t)) )
     {
         ERROR("PAGE_DATA record (length %u) too short to contain %u"
               " pfns worth of information", rec->length, pages->count);
@@ -383,7 +388,8 @@  static int handle_page_data(struct xc_sr_context *ctx, struct xc_sr_record *rec)
                   type, pfn, i);
             goto err;
         }
-        else if ( type < XEN_DOMCTL_PFINFO_BROKEN )
+
+        if ( type < XEN_DOMCTL_PFINFO_BROKEN )
             /* NOTAB and all L1 through L4 tables (including pinned) should
              * have a page worth of data in the record. */
             pages_of_data++;
diff --git a/tools/libxc/xc_sr_restore_x86_hvm.c b/tools/libxc/xc_sr_restore_x86_hvm.c
index 4765a52f33..9763aaa8dc 100644
--- a/tools/libxc/xc_sr_restore_x86_hvm.c
+++ b/tools/libxc/xc_sr_restore_x86_hvm.c
@@ -142,12 +142,14 @@  static int x86_hvm_setup(struct xc_sr_context *ctx)
               dhdr_type_to_str(ctx->restore.guest_type));
         return -1;
     }
-    else if ( ctx->restore.guest_page_size != PAGE_SIZE )
+
+    if ( ctx->restore.guest_page_size != PAGE_SIZE )
     {
         ERROR("Invalid page size %u for x86_hvm domains",
               ctx->restore.guest_page_size);
         return -1;
     }
+
 #ifdef __i386__
     /* Very large domains (> 1TB) will exhaust virtual address space. */
     if ( ctx->restore.p2m_size > 0x0fffffff )
diff --git a/tools/libxc/xc_sr_restore_x86_pv.c b/tools/libxc/xc_sr_restore_x86_pv.c
index 9e9ff32d47..2367f2a9ed 100644
--- a/tools/libxc/xc_sr_restore_x86_pv.c
+++ b/tools/libxc/xc_sr_restore_x86_pv.c
@@ -145,7 +145,8 @@  static int process_start_info(struct xc_sr_context *ctx,
         ERROR("Start Info pfn %#lx out of range", pfn);
         goto err;
     }
-    else if ( ctx->x86_pv.restore.pfn_types[pfn] != XEN_DOMCTL_PFINFO_NOTAB )
+
+    if ( ctx->x86_pv.restore.pfn_types[pfn] != XEN_DOMCTL_PFINFO_NOTAB )
     {
         ERROR("Start Info pfn %#lx has bad type %u", pfn,
               (ctx->x86_pv.restore.pfn_types[pfn] >>
@@ -275,8 +276,8 @@  static int process_vcpu_basic(struct xc_sr_context *ctx,
             ERROR("GDT frame %u (pfn %#lx) out of range", i, pfn);
             goto err;
         }
-        else if ( (ctx->x86_pv.restore.pfn_types[pfn] !=
-                   XEN_DOMCTL_PFINFO_NOTAB) )
+
+        if ( (ctx->x86_pv.restore.pfn_types[pfn] != XEN_DOMCTL_PFINFO_NOTAB) )
         {
             ERROR("GDT frame %u (pfn %#lx) has bad type %u", i, pfn,
                   (ctx->x86_pv.restore.pfn_types[pfn] >>
@@ -302,10 +303,10 @@  static int process_vcpu_basic(struct xc_sr_context *ctx,
         ERROR("cr3 (pfn %#lx) out of range", pfn);
         goto err;
     }
-    else if ( (ctx->x86_pv.restore.pfn_types[pfn] &
-                XEN_DOMCTL_PFINFO_LTABTYPE_MASK) !=
-              (((xen_pfn_t)ctx->x86_pv.levels) <<
-               XEN_DOMCTL_PFINFO_LTAB_SHIFT) )
+
+    if ( (ctx->x86_pv.restore.pfn_types[pfn] &
+          XEN_DOMCTL_PFINFO_LTABTYPE_MASK) !=
+         (((xen_pfn_t)ctx->x86_pv.levels) << XEN_DOMCTL_PFINFO_LTAB_SHIFT) )
     {
         ERROR("cr3 (pfn %#lx) has bad type %u, expected %u", pfn,
               (ctx->x86_pv.restore.pfn_types[pfn] >>
@@ -334,10 +335,10 @@  static int process_vcpu_basic(struct xc_sr_context *ctx,
             ERROR("cr1 (pfn %#lx) out of range", pfn);
             goto err;
         }
-        else if ( (ctx->x86_pv.restore.pfn_types[pfn] &
-                   XEN_DOMCTL_PFINFO_LTABTYPE_MASK) !=
-                  (((xen_pfn_t)ctx->x86_pv.levels) <<
-                   XEN_DOMCTL_PFINFO_LTAB_SHIFT) )
+
+        if ( (ctx->x86_pv.restore.pfn_types[pfn] &
+              XEN_DOMCTL_PFINFO_LTABTYPE_MASK) !=
+             (((xen_pfn_t)ctx->x86_pv.levels) << XEN_DOMCTL_PFINFO_LTAB_SHIFT) )
         {
             ERROR("cr1 (pfn %#lx) has bad type %u, expected %u", pfn,
                   (ctx->x86_pv.restore.pfn_types[pfn] >>
@@ -542,8 +543,8 @@  static int update_guest_p2m(struct xc_sr_context *ctx)
                   pfn, i);
             goto err;
         }
-        else if ( (ctx->x86_pv.restore.pfn_types[pfn] !=
-                   XEN_DOMCTL_PFINFO_NOTAB) )
+
+        if ( (ctx->x86_pv.restore.pfn_types[pfn] != XEN_DOMCTL_PFINFO_NOTAB) )
         {
             ERROR("pfn (%#lx) for p2m_frame_list[%u] has bad type %u", pfn, i,
                   (ctx->x86_pv.restore.pfn_types[pfn] >>
@@ -692,7 +693,8 @@  static int handle_x86_pv_p2m_frames(struct xc_sr_context *ctx,
               rec->length, sizeof(*data) + sizeof(uint64_t));
         return -1;
     }
-    else if ( data->start_pfn > data->end_pfn )
+
+    if ( data->start_pfn > data->end_pfn )
     {
         ERROR("End pfn in stream (%#x) exceeds Start (%#x)",
               data->end_pfn, data->start_pfn);
@@ -1039,7 +1041,8 @@  static int x86_pv_setup(struct xc_sr_context *ctx)
               dhdr_type_to_str(ctx->restore.guest_type));
         return -1;
     }
-    else if ( ctx->restore.guest_page_size != PAGE_SIZE )
+
+    if ( ctx->restore.guest_page_size != PAGE_SIZE )
     {
         ERROR("Invalid page size %d for x86_pv domains",
               ctx->restore.guest_page_size);