* [PATCH] drm/panthor: Fix potential memleak of vma structure
@ 2025-10-20 8:59 Akash Goel
2025-10-20 9:30 ` Boris Brezillon
0 siblings, 1 reply; 4+ messages in thread
From: Akash Goel @ 2025-10-20 8:59 UTC (permalink / raw)
To: boris.brezillon, liviu.dudau, steven.price
Cc: dri-devel, linux-kernel, maarten.lankhorst, mripard, tzimmermann,
airlied, daniel, nd, Akash Goel
This commit addresses a memleak issue of panthor_vma (or drm_gpuva)
structure in Panthor driver, that can happen if the GPU page table
update operation to map the pages fail.
The issue is very unlikely to occur in practice.
Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block")
Signed-off-by: Akash Goel <akash.goel@arm.com>
---
drivers/gpu/drm/panthor/panthor_mmu.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
index 6dec4354e378..34a86f7b58d9 100644
--- a/drivers/gpu/drm/panthor/panthor_mmu.c
+++ b/drivers/gpu/drm/panthor/panthor_mmu.c
@@ -2081,8 +2081,10 @@ static int panthor_gpuva_sm_step_map(struct drm_gpuva_op *op, void *priv)
ret = panthor_vm_map_pages(vm, op->map.va.addr, flags_to_prot(vma->flags),
op_ctx->map.sgt, op->map.gem.offset,
op->map.va.range);
- if (ret)
+ if (ret) {
+ kfree(vma);
return ret;
+ }
/* Ref owned by the mapping now, clear the obj field so we don't release the
* pinning/obj ref behind GPUVA's back.
--
2.25.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] drm/panthor: Fix potential memleak of vma structure
2025-10-20 8:59 [PATCH] drm/panthor: Fix potential memleak of vma structure Akash Goel
@ 2025-10-20 9:30 ` Boris Brezillon
2025-10-20 9:50 ` Akash Goel
0 siblings, 1 reply; 4+ messages in thread
From: Boris Brezillon @ 2025-10-20 9:30 UTC (permalink / raw)
To: Akash Goel
Cc: liviu.dudau, steven.price, dri-devel, linux-kernel,
maarten.lankhorst, mripard, tzimmermann, airlied, daniel, nd
On Mon, 20 Oct 2025 09:59:14 +0100
Akash Goel <akash.goel@arm.com> wrote:
> This commit addresses a memleak issue of panthor_vma (or drm_gpuva)
> structure in Panthor driver, that can happen if the GPU page table
> update operation to map the pages fail.
> The issue is very unlikely to occur in practice.
>
> Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block")
> Signed-off-by: Akash Goel <akash.goel@arm.com>
> ---
> drivers/gpu/drm/panthor/panthor_mmu.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index 6dec4354e378..34a86f7b58d9 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -2081,8 +2081,10 @@ static int panthor_gpuva_sm_step_map(struct drm_gpuva_op *op, void *priv)
> ret = panthor_vm_map_pages(vm, op->map.va.addr, flags_to_prot(vma->flags),
> op_ctx->map.sgt, op->map.gem.offset,
> op->map.va.range);
> - if (ret)
> + if (ret) {
> + kfree(vma);
Calling kfree() in this context is probably fine, but I think I'd
prefer if we were introducing a panthor_vm_op_ctx_return_vma() helper
returning the vma to the preallocated array, and letting the deferred
cleanup function free this up.
> return ret;
> + }
>
> /* Ref owned by the mapping now, clear the obj field so we don't release the
> * pinning/obj ref behind GPUVA's back.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] drm/panthor: Fix potential memleak of vma structure
2025-10-20 9:30 ` Boris Brezillon
@ 2025-10-20 9:50 ` Akash Goel
2025-10-20 11:20 ` Boris Brezillon
0 siblings, 1 reply; 4+ messages in thread
From: Akash Goel @ 2025-10-20 9:50 UTC (permalink / raw)
To: Boris Brezillon
Cc: liviu.dudau, steven.price, dri-devel, linux-kernel,
maarten.lankhorst, mripard, tzimmermann, airlied, daniel, nd
On 10/20/25 10:30, Boris Brezillon wrote:
> On Mon, 20 Oct 2025 09:59:14 +0100
> Akash Goel <akash.goel@arm.com> wrote:
>
>> This commit addresses a memleak issue of panthor_vma (or drm_gpuva)
>> structure in Panthor driver, that can happen if the GPU page table
>> update operation to map the pages fail.
>> The issue is very unlikely to occur in practice.
>>
>> Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block")
>> Signed-off-by: Akash Goel <akash.goel@arm.com>
>> ---
>> drivers/gpu/drm/panthor/panthor_mmu.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
>> index 6dec4354e378..34a86f7b58d9 100644
>> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
>> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
>> @@ -2081,8 +2081,10 @@ static int panthor_gpuva_sm_step_map(struct drm_gpuva_op *op, void *priv)
>> ret = panthor_vm_map_pages(vm, op->map.va.addr, flags_to_prot(vma->flags),
>> op_ctx->map.sgt, op->map.gem.offset,
>> op->map.va.range);
>> - if (ret)
>> + if (ret) {
>> + kfree(vma);
>
> Calling kfree() in this context is probably fine, but I think I'd
> prefer if we were introducing a panthor_vm_op_ctx_return_vma() helper
> returning the vma to the preallocated array, and letting the deferred
> cleanup function free this up.
Thanks for the quick review.
So need to do like this, where we search for a NULL entry to store the
VMA pointer to be returned ?
static void
panthor_vm_op_ctx_return_vma(struct panthor_vm_op_ctx *op_ctx,
struct panthor_vma *vma)
{
for (u32 i = 0; i < ARRAY_SIZE(op_ctx->preallocated_vmas); i++) {
if (!op_ctx->preallocated_vmas[i]) {
op_ctx->preallocated_vmas[i] = vma;
return;
}
}
}
Please let me know.
Best regards
Akash
>
>> return ret;
>> + }
>>
>> /* Ref owned by the mapping now, clear the obj field so we don't release the
>> * pinning/obj ref behind GPUVA's back.
>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] drm/panthor: Fix potential memleak of vma structure
2025-10-20 9:50 ` Akash Goel
@ 2025-10-20 11:20 ` Boris Brezillon
0 siblings, 0 replies; 4+ messages in thread
From: Boris Brezillon @ 2025-10-20 11:20 UTC (permalink / raw)
To: Akash Goel
Cc: liviu.dudau, steven.price, dri-devel, linux-kernel,
maarten.lankhorst, mripard, tzimmermann, airlied, daniel, nd
On Mon, 20 Oct 2025 10:50:19 +0100
Akash Goel <akash.goel@arm.com> wrote:
> On 10/20/25 10:30, Boris Brezillon wrote:
> > On Mon, 20 Oct 2025 09:59:14 +0100
> > Akash Goel <akash.goel@arm.com> wrote:
> >
> >> This commit addresses a memleak issue of panthor_vma (or drm_gpuva)
> >> structure in Panthor driver, that can happen if the GPU page table
> >> update operation to map the pages fail.
> >> The issue is very unlikely to occur in practice.
> >>
> >> Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block")
> >> Signed-off-by: Akash Goel <akash.goel@arm.com>
> >> ---
> >> drivers/gpu/drm/panthor/panthor_mmu.c | 4 +++-
> >> 1 file changed, 3 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> >> index 6dec4354e378..34a86f7b58d9 100644
> >> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> >> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> >> @@ -2081,8 +2081,10 @@ static int panthor_gpuva_sm_step_map(struct drm_gpuva_op *op, void *priv)
> >> ret = panthor_vm_map_pages(vm, op->map.va.addr, flags_to_prot(vma->flags),
> >> op_ctx->map.sgt, op->map.gem.offset,
> >> op->map.va.range);
> >> - if (ret)
> >> + if (ret) {
> >> + kfree(vma);
> >
> > Calling kfree() in this context is probably fine, but I think I'd
> > prefer if we were introducing a panthor_vm_op_ctx_return_vma() helper
> > returning the vma to the preallocated array, and letting the deferred
> > cleanup function free this up.
>
>
> Thanks for the quick review.
>
> So need to do like this, where we search for a NULL entry to store the
> VMA pointer to be returned ?
>
> static void
> panthor_vm_op_ctx_return_vma(struct panthor_vm_op_ctx *op_ctx,
> struct panthor_vma *vma)
> {
> for (u32 i = 0; i < ARRAY_SIZE(op_ctx->preallocated_vmas); i++) {
> if (!op_ctx->preallocated_vmas[i]) {
> op_ctx->preallocated_vmas[i] = vma;
> return;
> }
> }
> }
>
>
> Please let me know.
Yep, that looks good to me.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-10-20 11:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-20 8:59 [PATCH] drm/panthor: Fix potential memleak of vma structure Akash Goel
2025-10-20 9:30 ` Boris Brezillon
2025-10-20 9:50 ` Akash Goel
2025-10-20 11:20 ` Boris Brezillon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox