diff mbox series

[3/9] staging: media: atomisp: improve unwinding

Message ID 97bf2e6dcba166ba77a9c35e3fe7b0f20a0abf7a.1696586632.git.hverkuil-cisco@xs4all.nl (mailing list archive)
State New, archived
Headers show
Series media: fix smatch warnings | expand

Commit Message

Hans Verkuil Oct. 6, 2023, 10:08 a.m. UTC
This fixes two smatch warnings:

drivers/staging/media/atomisp/pci/atomisp_cmd.c:2779 atomisp_cp_dvs_6axis_config() warn: missing unwind goto?
drivers/staging/media/atomisp/pci/atomisp_cmd.c:2878 atomisp_cp_morph_table() warn: missing unwind goto?

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
CC: Hans de Goede <hdegoede@redhat.com>
---
 .../staging/media/atomisp/pci/atomisp_cmd.c    | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

Comments

Hans de Goede Oct. 9, 2023, 2:52 p.m. UTC | #1
Hi,

On 10/6/23 12:08, Hans Verkuil wrote:
> This fixes two smatch warnings:
> 
> drivers/staging/media/atomisp/pci/atomisp_cmd.c:2779 atomisp_cp_dvs_6axis_config() warn: missing unwind goto?
> drivers/staging/media/atomisp/pci/atomisp_cmd.c:2878 atomisp_cp_morph_table() warn: missing unwind goto?
> 
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> CC: Hans de Goede <hdegoede@redhat.com>
> ---
>  .../staging/media/atomisp/pci/atomisp_cmd.c    | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/staging/media/atomisp/pci/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
> index a54be2d20c58..759233a7ba50 100644
> --- a/drivers/staging/media/atomisp/pci/atomisp_cmd.c
> +++ b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
> @@ -2771,12 +2771,16 @@ int atomisp_cp_dvs_6axis_config(struct atomisp_sub_device *asd,
>  			css_param->dvs_6axis = NULL;
>  
>  			dvs_6axis_config = ia_css_dvs2_6axis_config_allocate(stream);
> -			if (!dvs_6axis_config)
> -				return -ENOMEM;
> +			if (!dvs_6axis_config) {
> +				ret = -ENOMEM;
> +				goto error;
> +			}
>  		} else if (!dvs_6axis_config) {
>  			dvs_6axis_config = ia_css_dvs2_6axis_config_allocate(stream);
> -			if (!dvs_6axis_config)
> -				return -ENOMEM;
> +			if (!dvs_6axis_config) {
> +				ret = -ENOMEM;
> +				goto error;
> +			}
>  		}
>  
>  		dvs_6axis_config->exp_id = source_6axis_config->exp_id;
> @@ -2874,8 +2878,10 @@ int atomisp_cp_morph_table(struct atomisp_sub_device *asd,
>  		morph_table = atomisp_css_morph_table_allocate(
>  				source_morph_table->width,
>  				source_morph_table->height);
> -		if (!morph_table)
> -			return -ENOMEM;
> +		if (!morph_table) {
> +			ret = -ENOMEM;
> +			goto error;
> +		}
>  
>  		for (i = 0; i < IA_CSS_MORPH_TABLE_NUM_PLANES; i++) {
>  			if (copy_from_compatible(morph_table->coordinates_x[i],

There are 2 : "morph_table = atomisp_css_morph_table_allocate(...)"
statements in this function in both branches of the
if (IS_ISP2401) { ... } else { ... } block, shouldn't both cases
get the goto error treatment ?

Otherwise this looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans
diff mbox series

Patch

diff --git a/drivers/staging/media/atomisp/pci/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
index a54be2d20c58..759233a7ba50 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
@@ -2771,12 +2771,16 @@  int atomisp_cp_dvs_6axis_config(struct atomisp_sub_device *asd,
 			css_param->dvs_6axis = NULL;
 
 			dvs_6axis_config = ia_css_dvs2_6axis_config_allocate(stream);
-			if (!dvs_6axis_config)
-				return -ENOMEM;
+			if (!dvs_6axis_config) {
+				ret = -ENOMEM;
+				goto error;
+			}
 		} else if (!dvs_6axis_config) {
 			dvs_6axis_config = ia_css_dvs2_6axis_config_allocate(stream);
-			if (!dvs_6axis_config)
-				return -ENOMEM;
+			if (!dvs_6axis_config) {
+				ret = -ENOMEM;
+				goto error;
+			}
 		}
 
 		dvs_6axis_config->exp_id = source_6axis_config->exp_id;
@@ -2874,8 +2878,10 @@  int atomisp_cp_morph_table(struct atomisp_sub_device *asd,
 		morph_table = atomisp_css_morph_table_allocate(
 				source_morph_table->width,
 				source_morph_table->height);
-		if (!morph_table)
-			return -ENOMEM;
+		if (!morph_table) {
+			ret = -ENOMEM;
+			goto error;
+		}
 
 		for (i = 0; i < IA_CSS_MORPH_TABLE_NUM_PLANES; i++) {
 			if (copy_from_compatible(morph_table->coordinates_x[i],