diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0228-drm-amdgpu-max_pde_used-usage-should-be-under-protec.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0228-drm-amdgpu-max_pde_used-usage-should-be-under-protec.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0228-drm-amdgpu-max_pde_used-usage-should-be-under-protec.patch b/common/recipes-kernel/linux/files/0228-drm-amdgpu-max_pde_used-usage-should-be-under-protec.patch new file mode 100644 index 00000000..991ce2de --- /dev/null +++ b/common/recipes-kernel/linux/files/0228-drm-amdgpu-max_pde_used-usage-should-be-under-protec.patch @@ -0,0 +1,48 @@ +From 3d5a08c114585e5b9f890807b04d2730dafde5e1 Mon Sep 17 00:00:00 2001 +From: "monk.liu" <monk.liu@amd.com> +Date: Tue, 26 May 2015 10:22:41 +0800 +Subject: [PATCH 0228/1050] drm/amdgpu: max_pde_used usage should be under + protect +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Need to take the lock when accessing this. + +Signed-off-by: monk.liu <monk.liu@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Jammy Zhou <jammy.zhou@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +index cc6dca2..dcb2d38 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +@@ -90,10 +90,13 @@ struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev, + struct amdgpu_bo_list_entry *list; + unsigned i, idx; + ++ mutex_lock(&vm->mutex); + list = drm_malloc_ab(vm->max_pde_used + 2, + sizeof(struct amdgpu_bo_list_entry)); +- if (!list) ++ if (!list) { ++ mutex_unlock(&vm->mutex); + return NULL; ++ } + + /* add the vm page table to the list */ + list[0].robj = vm->page_directory; +@@ -116,6 +119,7 @@ struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev, + list[idx].tv.shared = true; + list_add(&list[idx++].tv.head, head); + } ++ mutex_unlock(&vm->mutex); + + return list; + } +-- +1.9.1 + |