[v2] nvmem: u-boot-env: improve error checking

Message ID CH0PR20MB38183679A4F4229A419A9EB29C7D2@CH0PR20MB3818.namprd20.prod.outlook.com
State New
Headers
Series [v2] nvmem: u-boot-env: improve error checking |

Commit Message

Nick Spooner Jan. 30, 2024, 7:42 p.m. UTC
  Coverity scan reported CID 1575482: error handling issues; this patch
addresses this by adding error handling to u_boot_env_add_cells.

Signed-off-by: Nick Spooner <nicholas.spooner@seagate.com>
---
v2:
    Fix whitespace issues in previous version

 drivers/nvmem/u-boot-env.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--
2.34.1
  

Comments

Rafał Miłecki Jan. 30, 2024, 9:10 p.m. UTC | #1
On 30.01.2024 20:42, Nick Spooner wrote:
> Coverity scan reported CID 1575482: error handling issues; this patch
> addresses this by adding error handling to u_boot_env_add_cells.

I'd appreciate description why do we need this change other than
addressing some Coverity report.

Should a single nvmem_add_one_cell() failure result in not registering
NVMEM device at all? Why?


> Signed-off-by: Nick Spooner <nicholas.spooner@seagate.com>
> ---
> v2:
>      Fix whitespace issues in previous version
> 
>   drivers/nvmem/u-boot-env.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/nvmem/u-boot-env.c b/drivers/nvmem/u-boot-env.c
> index befbab156cda..c15de5f7fd99 100644
> --- a/drivers/nvmem/u-boot-env.c
> +++ b/drivers/nvmem/u-boot-env.c
> @@ -95,6 +95,7 @@ static int u_boot_env_add_cells(struct u_boot_env *priv, uint8_t *buf,
>   	struct device *dev = priv->dev;
>   	char *data = buf + data_offset;
>   	char *var, *value, *eq;
> +	int rval;
> 
>   	for (var = data;
>   	     var < data + data_len && *var;
> @@ -119,7 +120,9 @@ static int u_boot_env_add_cells(struct u_boot_env *priv, uint8_t *buf,
>   			info.read_post_process = u_boot_env_read_post_process_ethaddr;
>   		}
> 
> -		nvmem_add_one_cell(nvmem, &info);
> +		rval = nvmem_add_one_cell(nvmem, &info);
> +		if (rval)
> +			return rval;
>   	}
> 
>   	return 0;
> --
> 2.34.1
  

Patch

diff --git a/drivers/nvmem/u-boot-env.c b/drivers/nvmem/u-boot-env.c
index befbab156cda..c15de5f7fd99 100644
--- a/drivers/nvmem/u-boot-env.c
+++ b/drivers/nvmem/u-boot-env.c
@@ -95,6 +95,7 @@  static int u_boot_env_add_cells(struct u_boot_env *priv, uint8_t *buf,
 	struct device *dev = priv->dev;
 	char *data = buf + data_offset;
 	char *var, *value, *eq;
+	int rval;

 	for (var = data;
 	     var < data + data_len && *var;
@@ -119,7 +120,9 @@  static int u_boot_env_add_cells(struct u_boot_env *priv, uint8_t *buf,
 			info.read_post_process = u_boot_env_read_post_process_ethaddr;
 		}

-		nvmem_add_one_cell(nvmem, &info);
+		rval = nvmem_add_one_cell(nvmem, &info);
+		if (rval)
+			return rval;
 	}

 	return 0;