Skip to content

Commit 703677d

Browse files
xinhui panalexdeucher
authored andcommitted
drm/amdgpu: Fix a deadlock if previous GEM object allocation fails
Fall through to handle the error instead of return. Fixes: f8aab60 ("drm/amdgpu: Initialise drm_gem_object_funcs for imported BOs") Cc: [email protected] Signed-off-by: xinhui pan <[email protected]> Reviewed-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent f7d6779 commit 703677d

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -341,21 +341,18 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
341341
r = amdgpu_gem_object_create(adev, size, args->in.alignment,
342342
initial_domain,
343343
flags, ttm_bo_type_device, resv, &gobj);
344-
if (r) {
345-
if (r != -ERESTARTSYS) {
346-
if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
347-
flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
348-
goto retry;
349-
}
344+
if (r && r != -ERESTARTSYS) {
345+
if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
346+
flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
347+
goto retry;
348+
}
350349

351-
if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {
352-
initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
353-
goto retry;
354-
}
355-
DRM_DEBUG("Failed to allocate GEM object (%llu, %d, %llu, %d)\n",
356-
size, initial_domain, args->in.alignment, r);
350+
if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {
351+
initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
352+
goto retry;
357353
}
358-
return r;
354+
DRM_DEBUG("Failed to allocate GEM object (%llu, %d, %llu, %d)\n",
355+
size, initial_domain, args->in.alignment, r);
359356
}
360357

361358
if (flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) {

0 commit comments

Comments
 (0)