mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Dikshita Agarwal <quic_dikshita@quicinc.com>
To: Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
	Vikash Garodia <quic_vgarodia@quicinc.com>,
	Abhinav Kumar <abhinav.kumar@linux.dev>,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	Stefan Schmidt <stefan.schmidt@linaro.org>,
	Vedang Nagar <quic_vnagar@quicinc.com>
Cc: <linux-media@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	Renjiang Han <quic_renjiang@quicinc.com>,
	Wangao Wang <quic_wangaow@quicinc.com>
Subject: Re: [PATCH v2 03/24] media: iris: Fix memory leak by freeing untracked persist buffer
Date: Mon, 18 Aug 2025 08:40:54 +0530	[thread overview]
Message-ID: <a7c67628-072d-8e31-5f5f-2b322f40dbd4@quicinc.com> (raw)
In-Reply-To: <956110cf-d309-430c-b30f-a9c442e015cf@linaro.org>



On 8/16/2025 3:45 PM, Bryan O'Donoghue wrote:
> On 13/08/2025 10:37, Dikshita Agarwal wrote:
>> One internal buffer which is allocated only once per session was not
>> being freed during session close because it was not being tracked as
>> part of internal buffer list which resulted in a memory leak.
>>
>> Add the necessary logic to explicitly free the untracked internal buffer
>> during session close to ensure all allocated memory is released
>> properly.
>>
>> Fixes: 73702f45db81 ("media: iris: allocate, initialize and queue
>> internal buffers")
>> Reviewed-by: Vikash Garodia <quic_vgarodia@quicinc.com>
>> Tested-by: Vikash Garodia <quic_vgarodia@quicinc.com> # X1E80100
>> Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
>> ---
>>   drivers/media/platform/qcom/iris/iris_buffer.c | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c
>> b/drivers/media/platform/qcom/iris/iris_buffer.c
>> index
>> 6425e4919e3b0b849ba801ca9e01921c114144cd..9f664c241149362d44d3a8fa65e2266f9c2e80e0 100644
>> --- a/drivers/media/platform/qcom/iris/iris_buffer.c
>> +++ b/drivers/media/platform/qcom/iris/iris_buffer.c
>> @@ -413,6 +413,16 @@ static int iris_destroy_internal_buffers(struct
>> iris_inst *inst, u32 plane, bool
>>           }
>>       }
>>   +    if (force) {
>> +        buffers = &inst->buffers[BUF_PERSIST];
>> +
>> +        list_for_each_entry_safe(buf, next, &buffers->list, list) {
>> +            ret = iris_destroy_internal_buffer(inst, buf);
>> +            if (ret)
>> +                return ret;
>> +        }
>> +    }
>> +
>>       return 0;
>>   }
>>  
> 
> Why is the logic here not to simply release every index of the enum
> iris_buffer_type ?

All buffers indicated with enum iris_buffer_type are not related to both
encoder and decoder, some are specific for encoder and some are for
decoder. Hence while freeing we read the internal buffer list maintained in
platform data to get the exact buffer list applicable.

> 
> If I'm reading the code right here, len indicates the list of linked lists
> to free, adding BUF_PERSIST appends to the list that may be freed if force
> is true but, then what about the remaining entries BUF_SCRATCH_1 ?
> 

the buffer list here is the list of buffers of a specific kind eg: BUF_PERSIST.

BUF_PERSIST is not part of list maintained in platform data because it has
a different lifecycle than other internal buffers. that's why this specific
routine is needed to free BUF_PERSIST when destroying all buffers.


> Is it valid to leave this routine with force = true but BUF_SCRATCH_1 not
> specifically indexed, if so why ?

Other internal buffers are freed in another routine in the same API which
is not part of this particular code snippet.

Thanks,
Dikshita

> 

> ---
> bod

  reply	other threads:[~2025-08-18  3:11 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-13  9:37 [PATCH v2 00/24] Enable H.264/H.265 encoder support and fixes in common code Dikshita Agarwal
2025-08-13  9:37 ` [PATCH v2 01/24] media: iris: Fix buffer count reporting in internal buffer check Dikshita Agarwal
2025-08-13  9:37 ` [PATCH v2 02/24] media: iris: Report unreleased PERSIST buffers on session close Dikshita Agarwal
2025-08-13 10:53   ` Jorge Ramirez
2025-08-13 12:16     ` Dikshita Agarwal
2025-08-13  9:37 ` [PATCH v2 03/24] media: iris: Fix memory leak by freeing untracked persist buffer Dikshita Agarwal
2025-08-16 10:15   ` Bryan O'Donoghue
2025-08-18  3:10     ` Dikshita Agarwal [this message]
2025-08-13  9:37 ` [PATCH v2 04/24] media: iris: Fix port streaming handling Dikshita Agarwal
2025-08-16 10:40   ` Bryan O'Donoghue
2025-08-18  9:45     ` Dikshita Agarwal
2025-08-19 13:34       ` Bryan O'Donoghue
2025-08-13  9:37 ` [PATCH v2 05/24] media: iris: Allow substate transition to load resources during output streaming Dikshita Agarwal
2025-08-13 21:51   ` Bryan O'Donoghue
2025-08-13 21:55     ` Bryan O'Donoghue
2025-08-13 22:55     ` Konrad Dybcio
2025-08-14  6:13       ` Krzysztof Kozlowski
2025-08-14  7:50         ` Dikshita Agarwal
2025-08-13  9:37 ` [PATCH v2 06/24] media: iris: Always destroy internal buffers on firmware release response Dikshita Agarwal
2025-08-16 10:44   ` Bryan O'Donoghue
2025-08-13  9:37 ` [PATCH v2 07/24] media: iris: Update vbuf flags before v4l2_m2m_buf_done Dikshita Agarwal
2025-08-16 10:49   ` Bryan O'Donoghue
2025-08-13  9:37 ` [PATCH v2 08/24] media: iris: Allow stop on firmware only if start was issued Dikshita Agarwal
2025-08-16 11:07   ` Bryan O'Donoghue
2025-08-19  7:29     ` Dikshita Agarwal
2025-08-13  9:37 ` [PATCH v2 09/24] media: iris: Send dummy buffer address for all codecs during drain Dikshita Agarwal
2025-08-16 11:11   ` Bryan O'Donoghue
2025-08-13  9:38 ` [PATCH v2 10/24] media: iris: Fix missing LAST flag handling " Dikshita Agarwal
2025-08-16 11:17   ` Bryan O'Donoghue
2025-08-13  9:38 ` [PATCH v2 11/24] media: iris: Add support for video encoder device Dikshita Agarwal
2025-08-14 14:11   ` Vikash Garodia
2025-08-16 11:21   ` Bryan O'Donoghue
2025-08-18  3:28     ` Dikshita Agarwal
2025-08-13  9:38 ` [PATCH v2 12/24] media: iris: Initialize and deinitialize encoder instance structure Dikshita Agarwal
2025-08-14 14:25   ` Vikash Garodia
2025-08-18  3:21     ` Dikshita Agarwal
2025-08-18  6:08       ` Vikash Garodia
2025-08-16  9:03   ` Bryan O'Donoghue
2025-08-16 11:23     ` Bryan O'Donoghue
2025-08-18  3:27       ` Dikshita Agarwal
2025-08-13  9:38 ` [PATCH v2 13/24] media: iris: Add support for ENUM_FMT, S/G/TRY_FMT encoder Dikshita Agarwal
2025-08-14 14:32   ` Vikash Garodia
2025-08-13  9:38 ` [PATCH v2 14/24] media: iris: Add support for ENUM_FRAMESIZES/FRAMEINTERVALS for encoder Dikshita Agarwal
2025-08-14 14:43   ` Vikash Garodia
2025-08-18  3:21     ` Dikshita Agarwal
2025-08-18  6:10       ` Vikash Garodia
2025-08-13  9:38 ` [PATCH v2 15/24] media: iris: Add support for VIDIOC_QUERYCAP for encoder video device Dikshita Agarwal
2025-08-14 14:46   ` Vikash Garodia
2025-08-13  9:38 ` [PATCH v2 16/24] media: iris: Add encoder support for V4L2 event subscription Dikshita Agarwal
2025-08-14 14:48   ` Vikash Garodia
2025-08-13  9:38 ` [PATCH v2 17/24] media: iris: Add support for G/S_SELECTION for encoder video device Dikshita Agarwal
2025-08-14 14:54   ` Vikash Garodia
2025-08-18  3:25     ` Dikshita Agarwal
2025-08-18  6:11       ` Vikash Garodia
2025-08-13  9:38 ` [PATCH v2 18/24] media: iris: Add support for G/S_PARM " Dikshita Agarwal
2025-08-14 15:01   ` Vikash Garodia
2025-08-18  7:29     ` Dikshita Agarwal
2025-08-18  7:34       ` Vikash Garodia
2025-08-13  9:38 ` [PATCH v2 19/24] media: iris: Add platform-specific capabilities " Dikshita Agarwal
2025-08-14 15:05   ` Vikash Garodia
2025-08-18  7:25     ` Dikshita Agarwal
2025-08-18  7:27       ` Vikash Garodia
2025-08-13  9:38 ` [PATCH v2 20/24] media: iris: Add V4L2 streaming support " Dikshita Agarwal
2025-08-13  9:38 ` [PATCH v2 21/24] media: iris: Set platform capabilities to firmware " Dikshita Agarwal
2025-08-13  9:38 ` [PATCH v2 22/24] media: iris: Allocate and queue internal buffers " Dikshita Agarwal
2025-08-13  9:38 ` [PATCH v2 23/24] media: iris: Add support for buffer management ioctls for encoder device Dikshita Agarwal
2025-08-13  9:38 ` [PATCH v2 24/24] media: iris: Add support for drain sequence in encoder video device Dikshita Agarwal
2025-08-13 15:27 ` [PATCH v2 00/24] Enable H.264/H.265 encoder support and fixes in common code Neil Armstrong
2025-08-18 11:47   ` Dikshita Agarwal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a7c67628-072d-8e31-5f5f-2b322f40dbd4@quicinc.com \
    --to=quic_dikshita@quicinc.com \
    --cc=abhinav.kumar@linux.dev \
    --cc=bryan.odonoghue@linaro.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=quic_renjiang@quicinc.com \
    --cc=quic_vgarodia@quicinc.com \
    --cc=quic_vnagar@quicinc.com \
    --cc=quic_wangaow@quicinc.com \
    --cc=stefan.schmidt@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®