We are losing the reference to an allocated memory if try. Change the
order of the check to avoid that.

Cc: sta...@vger.kernel.org
Fixes: 6d5f26f2e045 ("media: staging/intel-ipu3-v4l: reduce kernel stack usage")
Signed-off-by: Ricardo Ribalda <riba...@chromium.org>
---
 drivers/staging/media/ipu3/ipu3-v4l2.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c 
b/drivers/staging/media/ipu3/ipu3-v4l2.c
index 60aa02eb7d2a..35a74d99322f 100644
--- a/drivers/staging/media/ipu3/ipu3-v4l2.c
+++ b/drivers/staging/media/ipu3/ipu3-v4l2.c
@@ -693,6 +693,13 @@ static int imgu_fmt(struct imgu_device *imgu, unsigned int 
pipe, int node,
                if (inode == IMGU_NODE_STAT_3A || inode == IMGU_NODE_PARAMS)
                        continue;
 
+               /* CSS expects some format on OUT queue */
+               if (i != IPU3_CSS_QUEUE_OUT &&
+                   !imgu_pipe->nodes[inode].enabled) {
+                       fmts[i] = NULL;
+                       continue;
+               }
+
                if (try) {
                        fmts[i] = 
kmemdup(&imgu_pipe->nodes[inode].vdev_fmt.fmt.pix_mp,
                                          sizeof(struct v4l2_pix_format_mplane),
@@ -705,10 +712,6 @@ static int imgu_fmt(struct imgu_device *imgu, unsigned int 
pipe, int node,
                        fmts[i] = &imgu_pipe->nodes[inode].vdev_fmt.fmt.pix_mp;
                }
 
-               /* CSS expects some format on OUT queue */
-               if (i != IPU3_CSS_QUEUE_OUT &&
-                   !imgu_pipe->nodes[inode].enabled)
-                       fmts[i] = NULL;
        }
 
        if (!try) {
-- 
2.31.0.rc2.261.g7f71774620-goog

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to