Commit 45c734fd authored by Harshit Mogalapalli's avatar Harshit Mogalapalli Committed by Boris Brezillon
Browse files

drm/panthor: Don't return NULL from panthor_vm_get_heap_pool()



The kernel doc says this function returns either a valid pointer
or an ERR_PTR(), but in practice this function can return NULL if
create=false. Fix the function to match the doc (return
ERR_PTR(-ENOENT) instead of NULL) and adjust all call-sites
accordingly.

Fixes: 4bdca115 ("drm/panthor: Add the driver frontend block")
Signed-off-by: default avatarHarshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Reviewed-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240402141412.1707949-1-harshit.m.mogalapalli@oracle.com
parent 6e0718f2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1090,8 +1090,8 @@ static int panthor_ioctl_tiler_heap_destroy(struct drm_device *ddev, void *data,
		return -EINVAL;

	pool = panthor_vm_get_heap_pool(vm, false);
	if (!pool) {
		ret = -EINVAL;
	if (IS_ERR(pool)) {
		ret = PTR_ERR(pool);
		goto out_put_vm;
	}

+2 −0
Original line number Diff line number Diff line
@@ -1897,6 +1897,8 @@ struct panthor_heap_pool *panthor_vm_get_heap_pool(struct panthor_vm *vm, bool c
			vm->heaps.pool = panthor_heap_pool_get(pool);
	} else {
		pool = panthor_heap_pool_get(vm->heaps.pool);
		if (!pool)
			pool = ERR_PTR(-ENOENT);
	}
	mutex_unlock(&vm->heaps.lock);

+1 −1
Original line number Diff line number Diff line
@@ -1343,7 +1343,7 @@ static int group_process_tiler_oom(struct panthor_group *group, u32 cs_id)
	if (unlikely(csg_id < 0))
		return 0;

	if (!heaps || frag_end > vt_end || vt_end >= vt_start) {
	if (IS_ERR(heaps) || frag_end > vt_end || vt_end >= vt_start) {
		ret = -EINVAL;
	} else {
		/* We do the allocation without holding the scheduler lock to avoid