diff mbox series

drm/msm: allow returning NULL from crete_address_space

Message ID 20240908-adreno-fix-cpas-v1-1-57697a0d747f@linaro.org
State New
Headers show
Series drm/msm: allow returning NULL from crete_address_space | expand

Commit Message

Dmitry Baryshkov Sept. 8, 2024, 5:59 p.m. UTC
Under some circumstances it might be required to return NULL from the
create_address_space callback, meaning that the driver should use global
address space. Use IS_ERR_OR_NULL() to guard aspace->pid assignment
instead of just IS_ERR(). This plays well with the IS_ERR_OR_NULL()
check few lines below.

Fixes: 25faf2f2e065 ("drm/msm: Show process names in gem_describe")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/msm/msm_gpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


---
base-commit: 9aaeb87ce1e966169a57f53a02ba05b30880ffb8
change-id: 20240908-adreno-fix-cpas-48f3b992439d

Best regards,

Comments

Konrad Dybcio Sept. 9, 2024, 10:34 a.m. UTC | #1
On 8.09.2024 7:59 PM, Dmitry Baryshkov wrote:
> Under some circumstance

Under what circumstances?

This branch is only taken if there's a .create_private_address_space
callback and it only seems to be there on a[67]xx.

a6xx_create_address_space returns:

- an ERR_PTR if msm_iommu_pagetable_create() fails
- retval of msm_gem_address_space_create() otherwise
   - retval of msm_iommu_pagetable_create() is nullchecked here
     again because we apparently we want to be double sure
   - err_ptr(-enomem) is returned if allocating aspace fails
   - otherwise aspace is allocated somewhere

Konrad
diff mbox series

Patch

diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
index a274b8466423..47803f410dbb 100644
--- a/drivers/gpu/drm/msm/msm_gpu.c
+++ b/drivers/gpu/drm/msm/msm_gpu.c
@@ -833,7 +833,7 @@  msm_gpu_create_private_address_space(struct msm_gpu *gpu, struct task_struct *ta
 	 */
 	if (gpu->funcs->create_private_address_space) {
 		aspace = gpu->funcs->create_private_address_space(gpu);
-		if (!IS_ERR(aspace))
+		if (!IS_ERR_OR_NULL(aspace))
 			aspace->pid = get_pid(task_pid(task));
 	}