staging: unisys: visorbus: cleanup gotos in parser_init_byte_stream
authorDavid Kershner <david.kershner@unisys.com>
Fri, 11 Mar 2016 22:01:40 +0000 (17:01 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 28 Mar 2016 14:30:36 +0000 (07:30 -0700)
Clean up the goto in parser_init_byte_stream and make the goto section
the error case.

Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Timothy Sell <timothy.sell@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/visorbus/visorchipset.c

index 6ab659cbd6d5074ff5db44c377297cefc55ff361..6598d6977263087b6688dc61b6eb2633415efdc9 100644 (file)
@@ -359,8 +359,7 @@ static struct parser_context *
 parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
 {
        int allocbytes = sizeof(struct parser_context) + bytes;
-       struct parser_context *rc = NULL;
-       struct parser_context *ctx = NULL;
+       struct parser_context *ctx;
 
        if (retry)
                *retry = false;
@@ -374,15 +373,13 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
            > MAX_CONTROLVM_PAYLOAD_BYTES) {
                if (retry)
                        *retry = true;
-               rc = NULL;
-               goto cleanup;
+               return NULL;
        }
        ctx = kzalloc(allocbytes, GFP_KERNEL | __GFP_NORETRY);
        if (!ctx) {
                if (retry)
                        *retry = true;
-               rc = NULL;
-               goto cleanup;
+               return NULL;
        }
 
        ctx->allocbytes = allocbytes;
@@ -393,35 +390,27 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
        if (local) {
                void *p;
 
-               if (addr > virt_to_phys(high_memory - 1)) {
-                       rc = NULL;
-                       goto cleanup;
-               }
+               if (addr > virt_to_phys(high_memory - 1))
+                       goto err_finish_ctx;
                p = __va((unsigned long)(addr));
                memcpy(ctx->data, p, bytes);
        } else {
                void *mapping = memremap(addr, bytes, MEMREMAP_WB);
 
-               if (!mapping) {
-                       rc = NULL;
-                       goto cleanup;
-               }
+               if (!mapping)
+                       goto err_finish_ctx;
                memcpy(ctx->data, mapping, bytes);
                memunmap(mapping);
        }
 
        ctx->byte_stream = true;
-       rc = ctx;
-cleanup:
-       if (rc) {
-               controlvm_payload_bytes_buffered += ctx->param_bytes;
-       } else {
-               if (ctx) {
-                       parser_done(ctx);
-                       ctx = NULL;
-               }
-       }
-       return rc;
+       controlvm_payload_bytes_buffered += ctx->param_bytes;
+
+       return ctx;
+
+err_finish_ctx:
+       parser_done(ctx);
+       return NULL;
 }
 
 static uuid_le