public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] drm/amdgpu: Fixes to amdgpu_userq_fence_driver_alloc()
@ 2025-04-12 14:39 Dan Carpenter
  2025-04-12 14:39 ` [PATCH v2 1/2] drm/amdgpu: Fix double free in amdgpu_userq_fence_driver_alloc() Dan Carpenter
  2025-04-12 14:39 ` [PATCH v2 2/2] drm/amdgpu: Clean up error handling " Dan Carpenter
  0 siblings, 2 replies; 6+ messages in thread
From: Dan Carpenter @ 2025-04-12 14:39 UTC (permalink / raw)
  To: Alex Deucher
  Cc: amd-gfx, Arunpravin Paneer Selvam, Arvind Yadav,
	Christian König, David Airlie, dri-devel, linux-kernel,
	Shashank Sharma, Simona Vetter

This fixes a double free on one error path in
amdgpu_userq_fence_driver_alloc() and cleans up another error path.

v2:
Did some additional cleanup

Dan Carpenter (2):
  drm/amdgpu: Fix double free in amdgpu_userq_fence_driver_alloc()
  drm/amdgpu: Clean up error handling in
    amdgpu_userq_fence_driver_alloc()

 drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

-- 
2.47.2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] drm/amdgpu: Fix double free in amdgpu_userq_fence_driver_alloc()
  2025-04-12 14:39 [PATCH v2 0/2] drm/amdgpu: Fixes to amdgpu_userq_fence_driver_alloc() Dan Carpenter
@ 2025-04-12 14:39 ` Dan Carpenter
  2025-04-14  4:38   ` Yadav, Arvind
  2025-04-12 14:39 ` [PATCH v2 2/2] drm/amdgpu: Clean up error handling " Dan Carpenter
  1 sibling, 1 reply; 6+ messages in thread
From: Dan Carpenter @ 2025-04-12 14:39 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam
  Cc: Alex Deucher, Christian König, David Airlie, Simona Vetter,
	Arvind Yadav, Shashank Sharma, amd-gfx, dri-devel, linux-kernel

The goto frees "fence_drv" so this is a double free bug.  There is no
need to call amdgpu_seq64_free(adev, fence_drv->va) since the seq64
allocation failed so change the goto to goto free_fence_drv.  Also
propagate the error code from amdgpu_seq64_alloc() instead of hard coding
it to -ENOMEM.

Fixes: e7cf21fbb277 ("drm/amdgpu: Few optimization and fixes for userq fence driver")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
v2: No change.

 drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
index a4953d668972..b012fece91e8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
@@ -84,11 +84,8 @@ int amdgpu_userq_fence_driver_alloc(struct amdgpu_device *adev,
 	/* Acquire seq64 memory */
 	r = amdgpu_seq64_alloc(adev, &fence_drv->va, &fence_drv->gpu_addr,
 			       &fence_drv->cpu_addr);
-	if (r) {
-		kfree(fence_drv);
-		r = -ENOMEM;
-		goto free_seq64;
-	}
+	if (r)
+		goto free_fence_drv;
 
 	memset(fence_drv->cpu_addr, 0, sizeof(u64));
 
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] drm/amdgpu: Clean up error handling in amdgpu_userq_fence_driver_alloc()
  2025-04-12 14:39 [PATCH v2 0/2] drm/amdgpu: Fixes to amdgpu_userq_fence_driver_alloc() Dan Carpenter
  2025-04-12 14:39 ` [PATCH v2 1/2] drm/amdgpu: Fix double free in amdgpu_userq_fence_driver_alloc() Dan Carpenter
@ 2025-04-12 14:39 ` Dan Carpenter
  2025-04-14  4:38   ` Yadav, Arvind
  1 sibling, 1 reply; 6+ messages in thread
From: Dan Carpenter @ 2025-04-12 14:39 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Christian König, David Airlie, Simona Vetter,
	Arunpravin Paneer Selvam, Arvind Yadav, Shashank Sharma, amd-gfx,
	dri-devel, linux-kernel

1) Checkpatch complains if we print an error message for kzalloc()
   failure.  The kzalloc() failure already has it's own error messages
   built in.  Also this allocation is small enough that it is guaranteed
   to succeed.
2) Return directly instead of doing a goto free_fence_drv.  The
   "fence_drv" is already NULL so no cleanup is necessary.

Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
v2: New patch

 drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
index b012fece91e8..86eab5461162 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
@@ -75,11 +75,8 @@ int amdgpu_userq_fence_driver_alloc(struct amdgpu_device *adev,
 	int r;
 
 	fence_drv = kzalloc(sizeof(*fence_drv), GFP_KERNEL);
-	if (!fence_drv) {
-		DRM_ERROR("Failed to allocate memory for fence driver\n");
-		r = -ENOMEM;
-		goto free_fence_drv;
-	}
+	if (!fence_drv)
+		return -ENOMEM;
 
 	/* Acquire seq64 memory */
 	r = amdgpu_seq64_alloc(adev, &fence_drv->va, &fence_drv->gpu_addr,
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/2] drm/amdgpu: Fix double free in amdgpu_userq_fence_driver_alloc()
  2025-04-12 14:39 ` [PATCH v2 1/2] drm/amdgpu: Fix double free in amdgpu_userq_fence_driver_alloc() Dan Carpenter
@ 2025-04-14  4:38   ` Yadav, Arvind
  0 siblings, 0 replies; 6+ messages in thread
From: Yadav, Arvind @ 2025-04-14  4:38 UTC (permalink / raw)
  To: Dan Carpenter, Arunpravin Paneer Selvam
  Cc: Alex Deucher, Christian König, David Airlie, Simona Vetter,
	Arvind Yadav, Shashank Sharma, amd-gfx, dri-devel, linux-kernel

Reviewed-by:Reviewed-by:Arvind Yadav <arvind.yadav@amd.com>

On 4/12/2025 8:09 PM, Dan Carpenter wrote:
> The goto frees "fence_drv" so this is a double free bug.  There is no
> need to call amdgpu_seq64_free(adev, fence_drv->va) since the seq64
> allocation failed so change the goto to goto free_fence_drv.  Also
> propagate the error code from amdgpu_seq64_alloc() instead of hard coding
> it to -ENOMEM.
>
> Fixes: e7cf21fbb277 ("drm/amdgpu: Few optimization and fixes for userq fence driver")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---
> v2: No change.
>
>   drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 7 ++-----
>   1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> index a4953d668972..b012fece91e8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> @@ -84,11 +84,8 @@ int amdgpu_userq_fence_driver_alloc(struct amdgpu_device *adev,
>   	/* Acquire seq64 memory */
>   	r = amdgpu_seq64_alloc(adev, &fence_drv->va, &fence_drv->gpu_addr,
>   			       &fence_drv->cpu_addr);
> -	if (r) {
> -		kfree(fence_drv);
> -		r = -ENOMEM;
> -		goto free_seq64;
> -	}
> +	if (r)
> +		goto free_fence_drv;
>   
>   	memset(fence_drv->cpu_addr, 0, sizeof(u64));
>   

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] drm/amdgpu: Clean up error handling in amdgpu_userq_fence_driver_alloc()
  2025-04-12 14:39 ` [PATCH v2 2/2] drm/amdgpu: Clean up error handling " Dan Carpenter
@ 2025-04-14  4:38   ` Yadav, Arvind
  2025-04-14 16:24     ` Alex Deucher
  0 siblings, 1 reply; 6+ messages in thread
From: Yadav, Arvind @ 2025-04-14  4:38 UTC (permalink / raw)
  To: Dan Carpenter, Alex Deucher
  Cc: Christian König, David Airlie, Simona Vetter,
	Arunpravin Paneer Selvam, Arvind Yadav, Shashank Sharma, amd-gfx,
	dri-devel, linux-kernel

Reviewed-by:Arvind Yadav <arvind.yadav@amd.com>

On 4/12/2025 8:09 PM, Dan Carpenter wrote:
> 1) Checkpatch complains if we print an error message for kzalloc()
>     failure.  The kzalloc() failure already has it's own error messages
>     built in.  Also this allocation is small enough that it is guaranteed
>     to succeed.
> 2) Return directly instead of doing a goto free_fence_drv.  The
>     "fence_drv" is already NULL so no cleanup is necessary.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---
> v2: New patch
>
>   drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 7 ++-----
>   1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> index b012fece91e8..86eab5461162 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> @@ -75,11 +75,8 @@ int amdgpu_userq_fence_driver_alloc(struct amdgpu_device *adev,
>   	int r;
>   
>   	fence_drv = kzalloc(sizeof(*fence_drv), GFP_KERNEL);
> -	if (!fence_drv) {
> -		DRM_ERROR("Failed to allocate memory for fence driver\n");
> -		r = -ENOMEM;
> -		goto free_fence_drv;
> -	}
> +	if (!fence_drv)
> +		return -ENOMEM;
>   
>   	/* Acquire seq64 memory */
>   	r = amdgpu_seq64_alloc(adev, &fence_drv->va, &fence_drv->gpu_addr,

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] drm/amdgpu: Clean up error handling in amdgpu_userq_fence_driver_alloc()
  2025-04-14  4:38   ` Yadav, Arvind
@ 2025-04-14 16:24     ` Alex Deucher
  0 siblings, 0 replies; 6+ messages in thread
From: Alex Deucher @ 2025-04-14 16:24 UTC (permalink / raw)
  To: Yadav, Arvind
  Cc: Dan Carpenter, Alex Deucher, Christian König, David Airlie,
	Simona Vetter, Arunpravin Paneer Selvam, Arvind Yadav,
	Shashank Sharma, amd-gfx, dri-devel, linux-kernel

Applied the series.  Thanks!

On Mon, Apr 14, 2025 at 12:48 AM Yadav, Arvind <arvyadav@amd.com> wrote:
>
> Reviewed-by:Arvind Yadav <arvind.yadav@amd.com>
>
> On 4/12/2025 8:09 PM, Dan Carpenter wrote:
> > 1) Checkpatch complains if we print an error message for kzalloc()
> >     failure.  The kzalloc() failure already has it's own error messages
> >     built in.  Also this allocation is small enough that it is guaranteed
> >     to succeed.
> > 2) Return directly instead of doing a goto free_fence_drv.  The
> >     "fence_drv" is already NULL so no cleanup is necessary.
> >
> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> > ---
> > v2: New patch
> >
> >   drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 7 ++-----
> >   1 file changed, 2 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> > index b012fece91e8..86eab5461162 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> > @@ -75,11 +75,8 @@ int amdgpu_userq_fence_driver_alloc(struct amdgpu_device *adev,
> >       int r;
> >
> >       fence_drv = kzalloc(sizeof(*fence_drv), GFP_KERNEL);
> > -     if (!fence_drv) {
> > -             DRM_ERROR("Failed to allocate memory for fence driver\n");
> > -             r = -ENOMEM;
> > -             goto free_fence_drv;
> > -     }
> > +     if (!fence_drv)
> > +             return -ENOMEM;
> >
> >       /* Acquire seq64 memory */
> >       r = amdgpu_seq64_alloc(adev, &fence_drv->va, &fence_drv->gpu_addr,

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-04-14 16:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-12 14:39 [PATCH v2 0/2] drm/amdgpu: Fixes to amdgpu_userq_fence_driver_alloc() Dan Carpenter
2025-04-12 14:39 ` [PATCH v2 1/2] drm/amdgpu: Fix double free in amdgpu_userq_fence_driver_alloc() Dan Carpenter
2025-04-14  4:38   ` Yadav, Arvind
2025-04-12 14:39 ` [PATCH v2 2/2] drm/amdgpu: Clean up error handling " Dan Carpenter
2025-04-14  4:38   ` Yadav, Arvind
2025-04-14 16:24     ` Alex Deucher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox