[PATCH v3] drm/amdgpu: Fix a deadlock if previous GEM object allocation fails
Christian König
christian.koenig at amd.com
Tue Aug 31 07:11:22 UTC 2021
Am 31.08.21 um 09:08 schrieb Pan, Xinhui:
> Fall through to handle the error instead of return.
>
> Fixes: f8aab60422c37 ("drm/amdgpu: Initialise drm_gem_object_funcs for
> imported BOs")
> Cc: stable at vger.kernel.org
> Signed-off-by: xinhui pan <xinhui.pan at amd.com>
Reviewed-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 23 ++++++++++-------------
> 1 file changed, 10 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index 85b292ed5c43..9e2525b96d04 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -341,21 +341,18 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
> r = amdgpu_gem_object_create(adev, size, args->in.alignment,
> initial_domain,
> flags, ttm_bo_type_device, resv, &gobj);
> - if (r) {
> - if (r != -ERESTARTSYS) {
> - if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
> - flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
> - goto retry;
> - }
> + if (r && r != -ERESTARTSYS) {
> + if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
> + flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
> + goto retry;
> + }
>
> - if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {
> - initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
> - goto retry;
> - }
> - DRM_DEBUG("Failed to allocate GEM object (%llu, %d, %llu, %d)\n",
> - size, initial_domain, args->in.alignment, r);
> + if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {
> + initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
> + goto retry;
> }
> - return r;
> + DRM_DEBUG("Failed to allocate GEM object (%llu, %d, %llu, %d)\n",
> + size, initial_domain, args->in.alignment, r);
> }
>
> if (flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) {
More information about the amd-gfx
mailing list