]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
media: verisilicon: Simplify error handling in tile_buffer_reallocate()
authorBenjamin Gaignard <benjamin.gaignard@collabora.com>
Thu, 23 Mar 2023 13:17:04 +0000 (14:17 +0100)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 25 May 2023 14:21:19 +0000 (16:21 +0200)
Rework allocation errors cases handling to simply it
by removing useless tests.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Reported-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/verisilicon/hantro_hevc.c

index 9383fb7081f6c2cf3f5be2bfe401c352a7cc2613..2c14330bc5621e9886ae4cef4ff36e3ec0e5d147 100644 (file)
@@ -109,7 +109,7 @@ static int tile_buffer_reallocate(struct hantro_ctx *ctx)
                                                       &hevc_dec->tile_filter.dma,
                                                       GFP_KERNEL);
        if (!hevc_dec->tile_filter.cpu)
-               goto err_free_tile_buffers;
+               return -ENOMEM;
        hevc_dec->tile_filter.size = size;
 
        size = (VERT_SAO_RAM_SIZE * height64 * (num_tile_cols - 1) * ctx->bit_depth) / 8;
@@ -125,31 +125,26 @@ static int tile_buffer_reallocate(struct hantro_ctx *ctx)
                                                    &hevc_dec->tile_bsd.dma,
                                                    GFP_KERNEL);
        if (!hevc_dec->tile_bsd.cpu)
-               goto err_free_tile_buffers;
+               goto err_free_sao_buffers;
        hevc_dec->tile_bsd.size = size;
 
        hevc_dec->num_tile_cols_allocated = num_tile_cols;
 
        return 0;
 
-err_free_tile_buffers:
-       if (hevc_dec->tile_filter.cpu)
-               dma_free_coherent(vpu->dev, hevc_dec->tile_filter.size,
-                                 hevc_dec->tile_filter.cpu,
-                                 hevc_dec->tile_filter.dma);
-       hevc_dec->tile_filter.cpu = NULL;
-
+err_free_sao_buffers:
        if (hevc_dec->tile_sao.cpu)
                dma_free_coherent(vpu->dev, hevc_dec->tile_sao.size,
                                  hevc_dec->tile_sao.cpu,
                                  hevc_dec->tile_sao.dma);
        hevc_dec->tile_sao.cpu = NULL;
 
-       if (hevc_dec->tile_bsd.cpu)
-               dma_free_coherent(vpu->dev, hevc_dec->tile_bsd.size,
-                                 hevc_dec->tile_bsd.cpu,
-                                 hevc_dec->tile_bsd.dma);
-       hevc_dec->tile_bsd.cpu = NULL;
+err_free_tile_buffers:
+       if (hevc_dec->tile_filter.cpu)
+               dma_free_coherent(vpu->dev, hevc_dec->tile_filter.size,
+                                 hevc_dec->tile_filter.cpu,
+                                 hevc_dec->tile_filter.dma);
+       hevc_dec->tile_filter.cpu = NULL;
 
        return -ENOMEM;
 }