diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4376-drm-amdgpu-fix-double-reference-dropping.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4376-drm-amdgpu-fix-double-reference-dropping.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4376-drm-amdgpu-fix-double-reference-dropping.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4376-drm-amdgpu-fix-double-reference-dropping.patch new file mode 100644 index 00000000..87c3fcc0 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4376-drm-amdgpu-fix-double-reference-dropping.patch @@ -0,0 +1,54 @@ +From 2885f3f5fb34f6e6f89821501c30491e125b4b0f Mon Sep 17 00:00:00 2001 +From: Pan Bian <bianpan2016@163.com> +Date: Wed, 6 Nov 2019 19:35:43 +0800 +Subject: [PATCH 4376/4736] drm/amdgpu: fix double reference dropping +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The reference to object fence is dropped at the end of the loop. +However, it is dropped again outside the loop. The reference can be +dropped immediately after calling dma_fence_wait() in the loop and +thus the dropping operation outside the loop can be removed. + +Reviewed-by: Christian König <christian.koenig@amd.com> +Signed-off-by: Pan Bian <bianpan2016@163.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c +index 3079ea8523c5..0f2aeb41e5c8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c +@@ -33,7 +33,7 @@ static int amdgpu_benchmark_do_move(struct amdgpu_device *adev, unsigned size, + { + unsigned long start_jiffies; + unsigned long end_jiffies; +- struct dma_fence *fence = NULL; ++ struct dma_fence *fence; + int i, r; + + start_jiffies = jiffies; +@@ -44,16 +44,14 @@ static int amdgpu_benchmark_do_move(struct amdgpu_device *adev, unsigned size, + if (r) + goto exit_do_move; + r = dma_fence_wait(fence, false); ++ dma_fence_put(fence); + if (r) + goto exit_do_move; +- dma_fence_put(fence); + } + end_jiffies = jiffies; + r = jiffies_to_msecs(end_jiffies - start_jiffies); + + exit_do_move: +- if (fence) +- dma_fence_put(fence); + return r; + } + +-- +2.17.1 + |