Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b66b50b authored by Michel Dänzer's avatar Michel Dänzer Committed by Dave Airlie
Browse files

drm/radeon/kms: Fix retrying ttm_bo_init() after it failed once.



If ttm_bo_init() returns failure, it already destroyed the BO, so we need to
retry from scratch.

Signed-off-by: default avatarMichel Dänzer <daenzer@vmware.com>
Tested-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
Cc: stable@kernel.org
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent b2298fd2
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -102,6 +102,8 @@ int radeon_bo_create(struct radeon_device *rdev, struct drm_gem_object *gobj,
		type = ttm_bo_type_device;
		type = ttm_bo_type_device;
	}
	}
	*bo_ptr = NULL;
	*bo_ptr = NULL;

retry:
	bo = kzalloc(sizeof(struct radeon_bo), GFP_KERNEL);
	bo = kzalloc(sizeof(struct radeon_bo), GFP_KERNEL);
	if (bo == NULL)
	if (bo == NULL)
		return -ENOMEM;
		return -ENOMEM;
@@ -109,8 +111,6 @@ int radeon_bo_create(struct radeon_device *rdev, struct drm_gem_object *gobj,
	bo->gobj = gobj;
	bo->gobj = gobj;
	bo->surface_reg = -1;
	bo->surface_reg = -1;
	INIT_LIST_HEAD(&bo->list);
	INIT_LIST_HEAD(&bo->list);

retry:
	radeon_ttm_placement_from_domain(bo, domain);
	radeon_ttm_placement_from_domain(bo, domain);
	/* Kernel allocation are uninterruptible */
	/* Kernel allocation are uninterruptible */
	mutex_lock(&rdev->vram_mutex);
	mutex_lock(&rdev->vram_mutex);