diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 9df2030..e3f3e4e 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -262,7 +262,7 @@
 	if (header_offset > entries_offset && header_offset < cbfs_len)
 		cbfs_len = header_offset;
 	cbfs_len -= entries_offset + align + entry_header_len;
-	cbfs_create_empty_entry(image, entry, cbfs_len, "");
+	cbfs_create_empty_entry(entry, cbfs_len, "");
 	LOG("Created CBFS image (capacity = %d bytes)\n", cbfs_len);
 	return 0;
 }
@@ -371,7 +371,7 @@
 	if (last_entry_size < 0)
 		WARN("No room to create the last entry!\n")
 	else
-		cbfs_create_empty_entry(image, dst_entry, last_entry_size, "");
+		cbfs_create_empty_entry(dst_entry, last_entry_size, "");
 
 	return 0;
 }
@@ -421,14 +421,14 @@
 	if (target - addr > min_entry_size) {
 		DEBUG("|min|...|header|content|... <create new entry>\n");
 		len = target - addr - min_entry_size;
-		cbfs_create_empty_entry(image, entry, len, "");
+		cbfs_create_empty_entry(entry, len, "");
 		if (verbose > 1) cbfs_print_entry_info(image, entry, stderr);
 		entry = cbfs_find_next_entry(image, entry);
 		addr = cbfs_get_entry_addr(image, entry);
 	}
 
 	len = size + (content_offset - addr - header_size);
-	cbfs_create_empty_entry(image, entry, len, name);
+	cbfs_create_empty_entry(entry, len, name);
 	if (len != size) {
 		DEBUG("|..|header|content|... <use offset to create entry>\n");
 		DEBUG("before: offset=0x%x, len=0x%x\n",
@@ -462,7 +462,7 @@
 	}
 
 	len = addr_next - addr - min_entry_size;
-	cbfs_create_empty_entry(image, entry, len, "");
+	cbfs_create_empty_entry(entry, len, "");
 	if (verbose > 1) cbfs_print_entry_info(image, entry, stderr);
 	return 0;
 }
@@ -518,8 +518,7 @@
 		if (!content_offset || content_offset == addr + header_size) {
 			DEBUG("Filling new entry data (%zd bytes).\n",
 			      buffer->size);
-			cbfs_create_empty_entry(image, entry, buffer->size,
-						name);
+			cbfs_create_empty_entry(entry, buffer->size, name);
 			entry->type = htonl(type);
 			memcpy(CBFS_SUBHEADER(entry), buffer->data, buffer->size);
 			if (verbose)
@@ -542,7 +541,7 @@
 			}
 			new_size -= cbfs_calculate_file_header_size("");
 			DEBUG("new size: %d\n", new_size);
-			cbfs_create_empty_entry(image, entry, new_size, "");
+			cbfs_create_empty_entry(entry, new_size, "");
 			if (verbose)
 				cbfs_print_entry_info(image, entry, stderr);
 			return 0;
@@ -827,7 +826,7 @@
 		DEBUG("join_empty_entry: combine 0x%x+0x%x and 0x%x+0x%x.\n",
 		      cbfs_get_entry_addr(image, entry), ntohl(entry->len),
 		      cbfs_get_entry_addr(image, next), ntohl(next->len));
-		cbfs_create_empty_entry(image, entry,
+		cbfs_create_empty_entry(entry,
 					(last_addr - addr -
 					 cbfs_calculate_file_header_size("")),
 					"");
@@ -943,8 +942,8 @@
 		       sizeof(entry->magic)) == 0);
 }
 
-int cbfs_create_empty_entry(struct cbfs_image *image, struct cbfs_file *entry,
-		      size_t len, const char *name)
+int cbfs_create_empty_entry(struct cbfs_file *entry,
+			    size_t len, const char *name)
 {
 	memset(entry, CBFS_CONTENT_DEFAULT_VALUE, sizeof(*entry));
 	memcpy(entry->magic, CBFS_FILE_MAGIC, sizeof(entry->magic));
