* [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt @ 2021-03-15 12:34 Ricardo Ribalda 2021-03-15 12:34 ` [PATCH v2 2/2] media: staging/intel-ipu3: Fix set_fmt error handling Ricardo Ribalda 2021-03-16 11:27 ` [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt Bingbu Cao 0 siblings, 2 replies; 7+ messages in thread From: Ricardo Ribalda @ 2021-03-15 12:34 UTC (permalink / raw) To: Sakari Ailus, Bingbu Cao, Tianshu Qiu, Mauro Carvalho Chehab, Greg Kroah-Hartman, Arnd Bergmann, linux-media, devel, linux-kernel Cc: Ricardo Ribalda, stable 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> --- 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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] media: staging/intel-ipu3: Fix set_fmt error handling 2021-03-15 12:34 [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt Ricardo Ribalda @ 2021-03-15 12:34 ` Ricardo Ribalda 2021-04-09 4:16 ` Tomasz Figa 2021-03-16 11:27 ` [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt Bingbu Cao 1 sibling, 1 reply; 7+ messages in thread From: Ricardo Ribalda @ 2021-03-15 12:34 UTC (permalink / raw) To: Sakari Ailus, Bingbu Cao, Tianshu Qiu, Mauro Carvalho Chehab, Greg Kroah-Hartman, Arnd Bergmann, linux-media, devel, linux-kernel Cc: Ricardo Ribalda, stable If there in an error during a set_fmt, do not overwrite the previous sizes with the invalid config. [ 38.662975] ipu3-imgu 0000:00:05.0: swiotlb buffer is full (sz: 4096 bytes) [ 38.662980] DMA: Out of SW-IOMMU space for 4096 bytes at device 0000:00:05.0 [ 38.663010] general protection fault: 0000 [#1] PREEMPT SMP Cc: stable@vger.kernel.org Fixes: 6d5f26f2e045 ("media: staging/intel-ipu3-v4l: reduce kernel stack usage") Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> --- drivers/staging/media/ipu3/ipu3-v4l2.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c index 35a74d99322f..6d9c49b39531 100644 --- a/drivers/staging/media/ipu3/ipu3-v4l2.c +++ b/drivers/staging/media/ipu3/ipu3-v4l2.c @@ -686,6 +686,7 @@ static int imgu_fmt(struct imgu_device *imgu, unsigned int pipe, int node, dev_dbg(dev, "IPU3 pipe %u pipe_id = %u", pipe, css_pipe->pipe_id); + css_q = imgu_node_to_queue(node); for (i = 0; i < IPU3_CSS_QUEUES; i++) { unsigned int inode = imgu_map_node(imgu, i); @@ -700,6 +701,11 @@ static int imgu_fmt(struct imgu_device *imgu, unsigned int pipe, int node, continue; } + if (i == css_q) { + fmts[i] = &f->fmt.pix_mp; + continue; + } + if (try) { fmts[i] = kmemdup(&imgu_pipe->nodes[inode].vdev_fmt.fmt.pix_mp, sizeof(struct v4l2_pix_format_mplane), @@ -728,16 +734,10 @@ static int imgu_fmt(struct imgu_device *imgu, unsigned int pipe, int node, rects[IPU3_CSS_RECT_GDC]->height = pad_fmt.height; } - /* - * imgu doesn't set the node to the value given by user - * before we return success from this function, so set it here. - */ - css_q = imgu_node_to_queue(node); if (!fmts[css_q]) { ret = -EINVAL; goto out; } - *fmts[css_q] = f->fmt.pix_mp; if (try) ret = imgu_css_fmt_try(&imgu->css, fmts, rects, pipe); @@ -748,15 +748,18 @@ static int imgu_fmt(struct imgu_device *imgu, unsigned int pipe, int node, if (ret < 0) goto out; - if (try) - f->fmt.pix_mp = *fmts[css_q]; - else - f->fmt = imgu_pipe->nodes[node].vdev_fmt.fmt; + /* + * imgu doesn't set the node to the value given by user + * before we return success from this function, so set it here. + */ + if (!try) + imgu_pipe->nodes[node].vdev_fmt.fmt.pix_mp = f->fmt.pix_mp; out: if (try) { for (i = 0; i < IPU3_CSS_QUEUES; i++) - kfree(fmts[i]); + if (i != css_q) + kfree(fmts[i]); } return ret; -- 2.31.0.rc2.261.g7f71774620-goog ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] media: staging/intel-ipu3: Fix set_fmt error handling 2021-03-15 12:34 ` [PATCH v2 2/2] media: staging/intel-ipu3: Fix set_fmt error handling Ricardo Ribalda @ 2021-04-09 4:16 ` Tomasz Figa 0 siblings, 0 replies; 7+ messages in thread From: Tomasz Figa @ 2021-04-09 4:16 UTC (permalink / raw) To: Ricardo Ribalda Cc: Sakari Ailus, Bingbu Cao, Tianshu Qiu, Mauro Carvalho Chehab, Greg Kroah-Hartman, Arnd Bergmann, linux-media, devel, linux-kernel, stable On Mon, Mar 15, 2021 at 01:34:06PM +0100, Ricardo Ribalda wrote: > If there in an error during a set_fmt, do not overwrite the previous > sizes with the invalid config. > > [ 38.662975] ipu3-imgu 0000:00:05.0: swiotlb buffer is full (sz: 4096 bytes) > [ 38.662980] DMA: Out of SW-IOMMU space for 4096 bytes at device 0000:00:05.0 > [ 38.663010] general protection fault: 0000 [#1] PREEMPT SMP > > Cc: stable@vger.kernel.org > Fixes: 6d5f26f2e045 ("media: staging/intel-ipu3-v4l: reduce kernel stack usage") > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > --- > drivers/staging/media/ipu3/ipu3-v4l2.c | 25 ++++++++++++++----------- > 1 file changed, 14 insertions(+), 11 deletions(-) Reviewed-by: Tomasz Figa <tfiga@chromium.org> Best regards, Tomasz ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt 2021-03-15 12:34 [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt Ricardo Ribalda 2021-03-15 12:34 ` [PATCH v2 2/2] media: staging/intel-ipu3: Fix set_fmt error handling Ricardo Ribalda @ 2021-03-16 11:27 ` Bingbu Cao 2021-03-16 17:50 ` Ricardo Ribalda 1 sibling, 1 reply; 7+ messages in thread From: Bingbu Cao @ 2021-03-16 11:27 UTC (permalink / raw) To: Ricardo Ribalda, Sakari Ailus, Bingbu Cao, Tianshu Qiu, Mauro Carvalho Chehab, Greg Kroah-Hartman, Arnd Bergmann, linux-media, devel, linux-kernel Cc: stable Hi, Ricardo Thanks for your patch. It looks fine for me, do you mind squash 2 patchsets into 1 commit? On 3/15/21 8:34 PM, Ricardo Ribalda wrote: > 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> > --- > 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) { > -- Best regards, Bingbu Cao ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt 2021-03-16 11:27 ` [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt Bingbu Cao @ 2021-03-16 17:50 ` Ricardo Ribalda 2021-03-17 6:47 ` Bingbu Cao 0 siblings, 1 reply; 7+ messages in thread From: Ricardo Ribalda @ 2021-03-16 17:50 UTC (permalink / raw) To: Bingbu Cao Cc: Sakari Ailus, Bingbu Cao, Tianshu Qiu, Mauro Carvalho Chehab, Greg Kroah-Hartman, Arnd Bergmann, Linux Media Mailing List, devel, Linux Kernel Mailing List, stable Hi Bingbu Thanks for your review On Tue, Mar 16, 2021 at 12:29 PM Bingbu Cao <bingbu.cao@linux.intel.com> wrote: > > Hi, Ricardo > > Thanks for your patch. > It looks fine for me, do you mind squash 2 patchsets into 1 commit? Are you sure? There are two different issues that we are solving. Best regards! > > On 3/15/21 8:34 PM, Ricardo Ribalda wrote: > > 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> > > --- > > 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) { > > > > -- > Best regards, > Bingbu Cao -- Ricardo Ribalda ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt 2021-03-16 17:50 ` Ricardo Ribalda @ 2021-03-17 6:47 ` Bingbu Cao 2021-04-06 13:29 ` Ricardo Ribalda 0 siblings, 1 reply; 7+ messages in thread From: Bingbu Cao @ 2021-03-17 6:47 UTC (permalink / raw) To: Ricardo Ribalda Cc: Sakari Ailus, Bingbu Cao, Tianshu Qiu, Mauro Carvalho Chehab, Greg Kroah-Hartman, Arnd Bergmann, Linux Media Mailing List, devel, Linux Kernel Mailing List, stable On 3/17/21 1:50 AM, Ricardo Ribalda wrote: > Hi Bingbu > > Thanks for your review > > On Tue, Mar 16, 2021 at 12:29 PM Bingbu Cao <bingbu.cao@linux.intel.com> wrote: >> >> Hi, Ricardo >> >> Thanks for your patch. >> It looks fine for me, do you mind squash 2 patchsets into 1 commit? > > Are you sure? There are two different issues that we are solving. Oh, I see. I thought you were fixing 1 issue here. Thanks! > > Best regards! > >> >> On 3/15/21 8:34 PM, Ricardo Ribalda wrote: >>> 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> >>> --- >>> 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) { >>> >> >> -- >> Best regards, >> Bingbu Cao > > > -- Best regards, Bingbu Cao ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt 2021-03-17 6:47 ` Bingbu Cao @ 2021-04-06 13:29 ` Ricardo Ribalda 0 siblings, 0 replies; 7+ messages in thread From: Ricardo Ribalda @ 2021-04-06 13:29 UTC (permalink / raw) To: Bingbu Cao Cc: Sakari Ailus, Bingbu Cao, Tianshu Qiu, Mauro Carvalho Chehab, Greg Kroah-Hartman, Arnd Bergmann, Linux Media Mailing List, devel, Linux Kernel Mailing List, stable Hi Bingbu Maybe you want to add your Reviewed-by ? ;) Thanks! On Wed, Mar 17, 2021 at 7:48 AM Bingbu Cao <bingbu.cao@linux.intel.com> wrote: > > > On 3/17/21 1:50 AM, Ricardo Ribalda wrote: > > Hi Bingbu > > > > Thanks for your review > > > > On Tue, Mar 16, 2021 at 12:29 PM Bingbu Cao <bingbu.cao@linux.intel.com> wrote: > >> > >> Hi, Ricardo > >> > >> Thanks for your patch. > >> It looks fine for me, do you mind squash 2 patchsets into 1 commit? > > > > Are you sure? There are two different issues that we are solving. > > Oh, I see. I thought you were fixing 1 issue here. > Thanks! > > > > > Best regards! > > > >> > >> On 3/15/21 8:34 PM, Ricardo Ribalda wrote: > >>> 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> > >>> --- > >>> 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) { > >>> > >> > >> -- > >> Best regards, > >> Bingbu Cao > > > > > > > > -- > Best regards, > Bingbu Cao -- Ricardo Ribalda ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-04-09 4:17 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-15 12:34 [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt Ricardo Ribalda 2021-03-15 12:34 ` [PATCH v2 2/2] media: staging/intel-ipu3: Fix set_fmt error handling Ricardo Ribalda 2021-04-09 4:16 ` Tomasz Figa 2021-03-16 11:27 ` [PATCH v2 1/2] media: staging/intel-ipu3: Fix memory leak in imu_fmt Bingbu Cao 2021-03-16 17:50 ` Ricardo Ribalda 2021-03-17 6:47 ` Bingbu Cao 2021-04-06 13:29 ` Ricardo Ribalda
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).