On Fri Apr 25 15:24:47 2025 -0400, Detlev Casanova wrote:
> During initialization, the post processor allocates the same number of
> buffers as the buf queue.
> As the init function is called in streamon(), if an allocation fails,
> streamon will return an error and streamoff() will not be called, keeping
> all post processor buffers allocated.
> 
> To avoid that, all post proc buffers are freed in case of an allocation
> error.
> 
> Fixes: 26711491a807 ("media: verisilicon: Refactor postprocessor to store 
> more buffers")
> Signed-off-by: Detlev Casanova <detlev.casan...@collabora.com>
> Reviewed-by: Nicolas Dufresne <nicolas.dufre...@collabora.com>
> Signed-off-by: Nicolas Dufresne <nicolas.dufre...@collabora.com>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/verisilicon/hantro_postproc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

---

diff --git a/drivers/media/platform/verisilicon/hantro_postproc.c 
b/drivers/media/platform/verisilicon/hantro_postproc.c
index c435a393e0cb..9f559a13d409 100644
--- a/drivers/media/platform/verisilicon/hantro_postproc.c
+++ b/drivers/media/platform/verisilicon/hantro_postproc.c
@@ -250,8 +250,10 @@ int hantro_postproc_init(struct hantro_ctx *ctx)
 
        for (i = 0; i < num_buffers; i++) {
                ret = hantro_postproc_alloc(ctx, i);
-               if (ret)
+               if (ret) {
+                       hantro_postproc_free(ctx);
                        return ret;
+               }
        }
 
        return 0;

Reply via email to