[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