[PATCH RESEND v2] drm/xe/vm: Fix an error path

Lucas De Marchi lucas.demarchi at intel.com
Fri Dec 22 23:28:51 UTC 2023


On Fri, Dec 22, 2023 at 06:59:04PM +0100, Thomas Hellström wrote:
>If using the VM_BIND_OP_UNMAP_ALL without any bound vmas for the
>vm, we will end up dereferencing an uninitialized variable and leak a
>bo lock. Fix this.
>
>v2:
>- Updated commit message (Lucas De Marchi)
>
>Reported-by: Dafna Hirschfeld <dhirschfeld at habana.ai>
>Closes: https://lore.kernel.org/intel-xe/jrwua7ckbiozfcaodx4gg2h4taiuxs53j5zlpf3qzvyhyiyl2d@pbs3plurokrj/
>Suggested-by: Dafna Hirschfeld <dhirschfeld at habana.ai>
>Fixes: 9f232f4ae249 ("drm/xe: Port Xe to GPUVA")
>Signed-off-by: Thomas Hellström <thomas.hellstrom at linux.intel.com>
>Acked-by: Lucas De Marchi <lucas.demarchi at intel.com>

you can change this to


Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

Lucas De Marchi

>---
> drivers/gpu/drm/xe/xe_vm.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
>index 1ca917b8315c..127842656a23 100644
>--- a/drivers/gpu/drm/xe/xe_vm.c
>+++ b/drivers/gpu/drm/xe/xe_vm.c
>@@ -2063,9 +2063,11 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
> 		if (err)
> 			return ERR_PTR(err);
>
>-		vm_bo = drm_gpuvm_bo_find(&vm->gpuvm, obj);
>-		if (!vm_bo)
>-			break;
>+		vm_bo = drm_gpuvm_bo_obtain(&vm->gpuvm, obj);
>+		if (IS_ERR(vm_bo)) {
>+			xe_bo_unlock(bo);
>+			return ERR_CAST(vm_bo);
>+		}
>
> 		ops = drm_gpuvm_bo_unmap_ops_create(vm_bo);
> 		drm_gpuvm_bo_put(vm_bo);
>-- 
>2.42.0
>


More information about the Intel-xe mailing list