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