libpayload: fix leak in libcbfs

stage wasn't freed on errors.

Change-Id: I10d2f42f3e484955619addbef2898981f6f90a35
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Found-by: Coverity Scan #1347345
Reviewed-on: https://review.coreboot.org/15958
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
diff --git a/payloads/libpayload/libcbfs/cbfs.c b/payloads/libpayload/libcbfs/cbfs.c
index 38b1ff8..3cce799 100644
--- a/payloads/libpayload/libcbfs/cbfs.c
+++ b/payloads/libpayload/libcbfs/cbfs.c
@@ -116,8 +116,10 @@
 				     sizeof(struct cbfs_stage),
 				     (void *) (uintptr_t) stage->load,
 				     stage->len);
-	if (!final_size)
-		return (void *) -1;
+	if (!final_size) {
+		entry = -1;
+		goto out;
+	}
 
 	memset((void *)((uintptr_t)stage->load + final_size), 0,
 	       stage->memlen - final_size);
@@ -127,6 +129,7 @@
 	entry = stage->entry;
 	// entry = ntohll(stage->entry);
 
+out:
 	free(stage);
 	return (void *) entry;
 }