* [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 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
* 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
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).