]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: staging/intel-ipu3: Fix memory leak in imu_fmt
authorRicardo Ribalda <ribalda@chromium.org>
Mon, 15 Mar 2021 12:34:05 +0000 (13:34 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 9 Apr 2021 11:06:48 +0000 (13:06 +0200)
We are losing the reference to an allocated memory if try. Change the
order of the check to avoid that.

Cc: stable@vger.kernel.org
Fixes: 6d5f26f2e045 ("media: staging/intel-ipu3-v4l: reduce kernel stack usage")
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/ipu3/ipu3-v4l2.c

index e8944e489c562356d05a5366448f218d78cc0be2..9e8980b345478d1aa31acb66d4b6eab7bfcf20de 100644 (file)
@@ -694,6 +694,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),
@@ -706,10 +713,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) {