2019-11-06 09:54:32

by Pan Bian

[permalink] [raw]
Subject: [PATCH] drm/amdgpu: fix double reference dropping

After dropping the reference of object fence in the loop, it should be
set to NULL to protecting dropping its reference again outside the loop.

Signed-off-by: Pan Bian <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c
index 649e68c4479b..3174093f35f3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c
@@ -47,6 +47,7 @@ static int amdgpu_benchmark_do_move(struct amdgpu_device *adev, unsigned size,
if (r)
goto exit_do_move;
dma_fence_put(fence);
+ fence = NULL;
}
end_jiffies = jiffies;
r = jiffies_to_msecs(end_jiffies - start_jiffies);
--
2.7.4


2019-11-06 10:01:03

by Christian König

[permalink] [raw]
Subject: Re: [PATCH] drm/amdgpu: fix double reference dropping

Am 06.11.19 um 10:53 schrieb Pan Bian:
> After dropping the reference of object fence in the loop, it should be
> set to NULL to protecting dropping its reference again outside the loop.

NAK, the actual bug is that we shouldn't drop the fence outside the loop
in the first place.

Just move the dma_fence_put(fence); two lines up and drop initializing
fence to NULL.

Regards,
Christian.

>
> Signed-off-by: Pan Bian <[email protected]>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c
> index 649e68c4479b..3174093f35f3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c
> @@ -47,6 +47,7 @@ static int amdgpu_benchmark_do_move(struct amdgpu_device *adev, unsigned size,
> if (r)
> goto exit_do_move;
> dma_fence_put(fence);
> + fence = NULL;
> }
> end_jiffies = jiffies;
> r = jiffies_to_msecs(end_jiffies - start_jiffies);