cbfs: Adjust return value of file_cbfs_next_file()
At present this uses a true return to indicate it found a file. Adjust it to use 0 for this, so it is consistent with other functions. Update its callers accordingly and add a check for malloc() failure in file_cbfs_fill_cache(). Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
381e1130a2
commit
c7bef7cf90
@ -77,11 +77,12 @@ static void swap_file_header(struct cbfs_fileheader *dest,
|
||||
* @param used A pointer to the count of of bytes scanned through,
|
||||
* including the file if one is found.
|
||||
*
|
||||
* @return 1 if a file is found, 0 if one isn't.
|
||||
* @return 0 if a file is found, -ENOENT if one isn't, -EBADF if a bad header
|
||||
* is found.
|
||||
*/
|
||||
static int file_cbfs_next_file(struct cbfs_priv *priv, u8 *start, u32 size,
|
||||
u32 align, struct cbfs_cachenode *new_node,
|
||||
u32 *used)
|
||||
static int file_cbfs_next_file(struct cbfs_priv *priv, u8 *start, int size,
|
||||
int align, struct cbfs_cachenode *new_node,
|
||||
int *used)
|
||||
{
|
||||
struct cbfs_fileheader header;
|
||||
|
||||
@ -105,7 +106,7 @@ static int file_cbfs_next_file(struct cbfs_priv *priv, u8 *start, u32 size,
|
||||
swap_file_header(&header, file_header);
|
||||
if (header.offset < sizeof(struct cbfs_fileheader)) {
|
||||
priv->result = CBFS_BAD_FILE;
|
||||
return -1;
|
||||
return -EBADF;
|
||||
}
|
||||
new_node->next = NULL;
|
||||
new_node->type = header.type;
|
||||
@ -122,14 +123,15 @@ static int file_cbfs_next_file(struct cbfs_priv *priv, u8 *start, u32 size,
|
||||
step = step + align - step % align;
|
||||
|
||||
*used += step;
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
/* Look through a CBFS instance and copy file metadata into regular memory. */
|
||||
static void file_cbfs_fill_cache(struct cbfs_priv *priv, u8 *start, u32 size,
|
||||
u32 align)
|
||||
static int file_cbfs_fill_cache(struct cbfs_priv *priv, u8 *start, u32 size,
|
||||
u32 align)
|
||||
{
|
||||
struct cbfs_cachenode *cache_node;
|
||||
struct cbfs_cachenode *new_node;
|
||||
@ -145,20 +147,21 @@ static void file_cbfs_fill_cache(struct cbfs_priv *priv, u8 *start, u32 size,
|
||||
priv->file_cache = NULL;
|
||||
|
||||
while (size >= align) {
|
||||
int used;
|
||||
int ret;
|
||||
u32 used;
|
||||
|
||||
new_node = (struct cbfs_cachenode *)
|
||||
malloc(sizeof(struct cbfs_cachenode));
|
||||
if (!new_node)
|
||||
return -ENOMEM;
|
||||
ret = file_cbfs_next_file(priv, start, size, align, new_node,
|
||||
&used);
|
||||
|
||||
if (ret < 0) {
|
||||
free(new_node);
|
||||
return;
|
||||
} else if (ret == 0) {
|
||||
free(new_node);
|
||||
break;
|
||||
if (ret == -ENOENT)
|
||||
break;
|
||||
return ret;
|
||||
}
|
||||
*cache_tail = new_node;
|
||||
cache_tail = &new_node->next;
|
||||
@ -167,6 +170,8 @@ static void file_cbfs_fill_cache(struct cbfs_priv *priv, u8 *start, u32 size,
|
||||
start += used;
|
||||
}
|
||||
priv->result = CBFS_SUCCESS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Get the CBFS header out of the ROM and do endian conversion. */
|
||||
@ -341,16 +346,14 @@ const struct cbfs_cachenode *file_cbfs_find_uncached(ulong end_of_rom,
|
||||
|
||||
while (size >= align) {
|
||||
int ret;
|
||||
u32 used;
|
||||
int used;
|
||||
|
||||
ret = file_cbfs_next_file(priv, start, size, align, &node,
|
||||
&used);
|
||||
|
||||
if (ret < 0)
|
||||
return NULL;
|
||||
else if (ret == 0)
|
||||
if (ret == -ENOENT)
|
||||
break;
|
||||
|
||||
else if (ret)
|
||||
return NULL;
|
||||
if (!strcmp(name, node.name))
|
||||
return &node;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user