[PATCH v2 2/2] drm/xe: Untangle vm_bind_ioctl cleanup order

Matthew Brost matthew.brost at intel.com
Fri Aug 15 20:05:50 UTC 2025


On Wed, Aug 13, 2025 at 12:12:31PM +0200, Christoph Manszewski wrote:
> Change the resource cleanup order to align with reverse allocation order.
> 
> Cc: Matthew Brost <matthew.brost at intel.com>

Reviewed-by: Matthew Brost <matthew.brost at intel.com>

> Signed-off-by: Christoph Manszewski <christoph.manszewski at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_vm.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 6fd28b205453..c86337e08a55 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -3567,7 +3567,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  		q = xe_exec_queue_lookup(xef, args->exec_queue_id);
>  		if (XE_IOCTL_DBG(xe, !q)) {
>  			err = -ENOENT;
> -			goto put_vm;
> +			goto free_bind_ops;
>  		}
>  
>  		if (XE_IOCTL_DBG(xe, !(q->flags & EXEC_QUEUE_FLAG_VM))) {
> @@ -3613,7 +3613,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  			       __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
>  		if (!ops) {
>  			err = -ENOMEM;
> -			goto release_vm_lock;
> +			goto free_bos;
>  		}
>  	}
>  
> @@ -3747,17 +3747,20 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  put_obj:
>  	for (i = 0; i < args->num_binds; ++i)
>  		xe_bo_put(bos[i]);
> +
> +	kvfree(ops);
> +free_bos:
> +	kvfree(bos);
>  release_vm_lock:
>  	up_write(&vm->lock);
>  put_exec_queue:
>  	if (q)
>  		xe_exec_queue_put(q);
> -put_vm:
> -	xe_vm_put(vm);
> -	kvfree(bos);
> -	kvfree(ops);
> +free_bind_ops:
>  	if (args->num_binds > 1)
>  		kvfree(bind_ops);
> +put_vm:
> +	xe_vm_put(vm);
>  	return err;
>  }
>  
> -- 
> 2.47.1
> 


More information about the Intel-xe mailing list