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

Commit 93f7abf1 authored by Jordan Crouse's avatar Jordan Crouse Committed by Rob Clark
Browse files

drm/msm: Gracefully handle failure in _msm_gem_kernel_new



If any of the function calls in _msm_gem_kernel_new fail we need
to make sure to dereference the GEM object with the appropriate
function for the current locking state.

Signed-off-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent 546ec7b4
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -1041,23 +1041,29 @@ static void *_msm_gem_kernel_new(struct drm_device *dev, uint32_t size,

	if (iova) {
		ret = msm_gem_get_iova(obj, aspace, iova);
		if (ret) {
			drm_gem_object_put(obj);
			return ERR_PTR(ret);
		}
		if (ret)
			goto err;
	}

	vaddr = msm_gem_get_vaddr(obj);
	if (IS_ERR(vaddr)) {
		msm_gem_put_iova(obj, aspace);
		drm_gem_object_put(obj);
		return ERR_CAST(vaddr);
		ret = PTR_ERR(vaddr);
		goto err;
	}

	if (bo)
		*bo = obj;

	return vaddr;
err:
	if (locked)
		drm_gem_object_put(obj);
	else
		drm_gem_object_put_unlocked(obj);

	return ERR_PTR(ret);

}

void *msm_gem_kernel_new(struct drm_device *dev, uint32_t size,