mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:1003 amdgpu_cs_parser_bos() warn: inconsistent returns '&p->bo_list->bo_list_mutex'.
@ 2026-02-02 20:02 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2026-02-02 20:02 UTC (permalink / raw)
  To: oe-kbuild, Sunil Khatri
  Cc: lkp, oe-kbuild-all, linux-kernel, Alex Deucher, Christian König

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   18f7fcd5e69a04df57b563360b88be72471d6b62
commit: e095b55155ef69a8ae0eb114a7fd2a381c012f33 drm/amdgpu: use user provided hmm_range buffer in amdgpu_ttm_tt_get_user_pages
config: s390-randconfig-r072-20260202 (https://download.01.org/0day-ci/archive/20260203/202602030017.7E0xShmH-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 10.5.0
smatch version: v0.5.0-8994-gd50c5a4c

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202602030017.7E0xShmH-lkp@intel.com/

smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:1003 amdgpu_cs_parser_bos() warn: inconsistent returns '&p->bo_list->bo_list_mutex'.

vim +1003 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

d4e8ad908b2095 Christian König   2022-09-08   855  static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
d4e8ad908b2095 Christian König   2022-09-08   856  				union drm_amdgpu_cs *cs)
d4e8ad908b2095 Christian König   2022-09-08   857  {
d4e8ad908b2095 Christian König   2022-09-08   858  	struct amdgpu_fpriv *fpriv = p->filp->driver_priv;
ca6c1e210aa7d7 Christian König   2022-04-16   859  	struct ttm_operation_ctx ctx = { true, false };
d4e8ad908b2095 Christian König   2022-09-08   860  	struct amdgpu_vm *vm = &fpriv->vm;
d4e8ad908b2095 Christian König   2022-09-08   861  	struct amdgpu_bo_list_entry *e;
ca6c1e210aa7d7 Christian König   2022-04-16   862  	struct drm_gem_object *obj;
ca6c1e210aa7d7 Christian König   2022-04-16   863  	unsigned long index;
4624459c84d71e Christian König   2022-03-02   864  	unsigned int i;
d4e8ad908b2095 Christian König   2022-09-08   865  	int r;
d4e8ad908b2095 Christian König   2022-09-08   866  
d4e8ad908b2095 Christian König   2022-09-08   867  	/* p->bo_list could already be assigned if AMDGPU_CHUNK_ID_BO_HANDLES is present */
d4e8ad908b2095 Christian König   2022-09-08   868  	if (cs->in.bo_list_handle) {
d4e8ad908b2095 Christian König   2022-09-08   869  		if (p->bo_list)
d4e8ad908b2095 Christian König   2022-09-08   870  			return -EINVAL;
d38ceaf99ed015 Alex Deucher      2015-04-20   871  
d4e8ad908b2095 Christian König   2022-09-08   872  		r = amdgpu_bo_list_get(fpriv, cs->in.bo_list_handle,
d4e8ad908b2095 Christian König   2022-09-08   873  				       &p->bo_list);
bbca24d0a3c111 Maíra Canal       2022-08-15   874  		if (r)
d38ceaf99ed015 Alex Deucher      2015-04-20   875  			return r;
d4e8ad908b2095 Christian König   2022-09-08   876  	} else if (!p->bo_list) {
d4e8ad908b2095 Christian König   2022-09-08   877  		/* Create a empty bo_list when no handle is provided */
d4e8ad908b2095 Christian König   2022-09-08   878  		r = amdgpu_bo_list_create(p->adev, p->filp, NULL, 0,
d4e8ad908b2095 Christian König   2022-09-08   879  					  &p->bo_list);
bbca24d0a3c111 Maíra Canal       2022-08-15   880  		if (r)
91e1a5207edec9 Christian König   2015-07-06   881  			return r;
d38ceaf99ed015 Alex Deucher      2015-04-20   882  	}
b495bd3a54e732 Christian König   2015-09-10   883  
d4e8ad908b2095 Christian König   2022-09-08   884  	mutex_lock(&p->bo_list->bo_list_mutex);
d5884513a31df0 Christian König   2017-09-08   885  
d4e8ad908b2095 Christian König   2022-09-08   886  	/* Get userptr backing pages. If pages are updated after registered
d4e8ad908b2095 Christian König   2022-09-08   887  	 * in amdgpu_gem_userptr_ioctl(), amdgpu_cs_list_validate() will do
d4e8ad908b2095 Christian König   2022-09-08   888  	 * amdgpu_ttm_backend_bind() to flush and invalidate new pages
d4e8ad908b2095 Christian König   2022-09-08   889  	 */
d4e8ad908b2095 Christian König   2022-09-08   890  	amdgpu_bo_list_for_each_userptr_entry(e, p->bo_list) {
d4e8ad908b2095 Christian König   2022-09-08   891  		bool userpage_invalidated = false;
ca6c1e210aa7d7 Christian König   2022-04-16   892  		struct amdgpu_bo *bo = e->bo;
ad864d243826ce Andrey Grodzovsky 2017-10-10   893  
e095b55155ef69 Sunil Khatri      2025-09-24   894  		e->range = kzalloc(sizeof(*e->range), GFP_KERNEL);
e095b55155ef69 Sunil Khatri      2025-09-24   895  		if (unlikely(!e->range))
e095b55155ef69 Sunil Khatri      2025-09-24   896  			return -ENOMEM;

Need to cleanup and unlock before returning.

e095b55155ef69 Sunil Khatri      2025-09-24   897  
e095b55155ef69 Sunil Khatri      2025-09-24   898  		r = amdgpu_ttm_tt_get_user_pages(bo, e->range);
c5b3cc417b0260 Sunil Khatri      2025-09-17   899  		if (r)
d4e8ad908b2095 Christian König   2022-09-08   900  			goto out_free_user_pages;
d38ceaf99ed015 Alex Deucher      2015-04-20   901  
d4e8ad908b2095 Christian König   2022-09-08   902  		for (i = 0; i < bo->tbo.ttm->num_pages; i++) {
c5b3cc417b0260 Sunil Khatri      2025-09-17   903  			if (bo->tbo.ttm->pages[i] != hmm_pfn_to_page(e->range->hmm_pfns[i])) {
d4e8ad908b2095 Christian König   2022-09-08   904  				userpage_invalidated = true;
d4e8ad908b2095 Christian König   2022-09-08   905  				break;
d4e8ad908b2095 Christian König   2022-09-08   906  			}
d4e8ad908b2095 Christian König   2022-09-08   907  		}
d4e8ad908b2095 Christian König   2022-09-08   908  		e->user_invalidated = userpage_invalidated;
9a79588c42bf89 Christian König   2016-06-22   909  	}
9a79588c42bf89 Christian König   2016-06-22   910  
ca6c1e210aa7d7 Christian König   2022-04-16   911  	drm_exec_until_all_locked(&p->exec) {
ca6c1e210aa7d7 Christian König   2022-04-16   912  		r = amdgpu_vm_lock_pd(&fpriv->vm, &p->exec, 1 + p->gang_size);
ca6c1e210aa7d7 Christian König   2022-04-16   913  		drm_exec_retry_on_contention(&p->exec);
ca6c1e210aa7d7 Christian König   2022-04-16   914  		if (unlikely(r))
d4e8ad908b2095 Christian König   2022-09-08   915  			goto out_free_user_pages;
d38ceaf99ed015 Alex Deucher      2015-04-20   916  
d4e8ad908b2095 Christian König   2022-09-08   917  		amdgpu_bo_list_for_each_entry(e, p->bo_list) {
ca6c1e210aa7d7 Christian König   2022-04-16   918  			/* One fence for TTM and one for each CS job */
ca6c1e210aa7d7 Christian König   2022-04-16   919  			r = drm_exec_prepare_obj(&p->exec, &e->bo->tbo.base,
ca6c1e210aa7d7 Christian König   2022-04-16   920  						 1 + p->gang_size);
ca6c1e210aa7d7 Christian König   2022-04-16   921  			drm_exec_retry_on_contention(&p->exec);
ca6c1e210aa7d7 Christian König   2022-04-16   922  			if (unlikely(r))
ca6c1e210aa7d7 Christian König   2022-04-16   923  				goto out_free_user_pages;
d38ceaf99ed015 Alex Deucher      2015-04-20   924  
ca6c1e210aa7d7 Christian König   2022-04-16   925  			e->bo_va = amdgpu_vm_bo_find(vm, e->bo);
ca6c1e210aa7d7 Christian König   2022-04-16   926  		}
ca6c1e210aa7d7 Christian König   2022-04-16   927  
ca6c1e210aa7d7 Christian König   2022-04-16   928  		if (p->uf_bo) {
ca6c1e210aa7d7 Christian König   2022-04-16   929  			r = drm_exec_prepare_obj(&p->exec, &p->uf_bo->tbo.base,
ca6c1e210aa7d7 Christian König   2022-04-16   930  						 1 + p->gang_size);
ca6c1e210aa7d7 Christian König   2022-04-16   931  			drm_exec_retry_on_contention(&p->exec);
ca6c1e210aa7d7 Christian König   2022-04-16   932  			if (unlikely(r))
ca6c1e210aa7d7 Christian König   2022-04-16   933  				goto out_free_user_pages;
ca6c1e210aa7d7 Christian König   2022-04-16   934  		}
ca6c1e210aa7d7 Christian König   2022-04-16   935  	}
ca6c1e210aa7d7 Christian König   2022-04-16   936  
ca6c1e210aa7d7 Christian König   2022-04-16   937  	amdgpu_bo_list_for_each_userptr_entry(e, p->bo_list) {
ca6c1e210aa7d7 Christian König   2022-04-16   938  		struct mm_struct *usermm;
ca6c1e210aa7d7 Christian König   2022-04-16   939  
ca6c1e210aa7d7 Christian König   2022-04-16   940  		usermm = amdgpu_ttm_tt_get_usermm(e->bo->tbo.ttm);
ca6c1e210aa7d7 Christian König   2022-04-16   941  		if (usermm && usermm != current->mm) {
ca6c1e210aa7d7 Christian König   2022-04-16   942  			r = -EPERM;
ca6c1e210aa7d7 Christian König   2022-04-16   943  			goto out_free_user_pages;
ca6c1e210aa7d7 Christian König   2022-04-16   944  		}
ca6c1e210aa7d7 Christian König   2022-04-16   945  
ca6c1e210aa7d7 Christian König   2022-04-16   946  		if (amdgpu_ttm_tt_is_userptr(e->bo->tbo.ttm) &&
c5b3cc417b0260 Sunil Khatri      2025-09-17   947  		    e->user_invalidated) {
ca6c1e210aa7d7 Christian König   2022-04-16   948  			amdgpu_bo_placement_from_domain(e->bo,
ca6c1e210aa7d7 Christian König   2022-04-16   949  							AMDGPU_GEM_DOMAIN_CPU);
ca6c1e210aa7d7 Christian König   2022-04-16   950  			r = ttm_bo_validate(&e->bo->tbo, &e->bo->placement,
ca6c1e210aa7d7 Christian König   2022-04-16   951  					    &ctx);
ca6c1e210aa7d7 Christian König   2022-04-16   952  			if (r)
ca6c1e210aa7d7 Christian König   2022-04-16   953  				goto out_free_user_pages;
ca6c1e210aa7d7 Christian König   2022-04-16   954  
ca6c1e210aa7d7 Christian König   2022-04-16   955  			amdgpu_ttm_tt_set_user_pages(e->bo->tbo.ttm,
c5b3cc417b0260 Sunil Khatri      2025-09-17   956  						     e->range);
ca6c1e210aa7d7 Christian König   2022-04-16   957  		}
d4e8ad908b2095 Christian König   2022-09-08   958  	}
d38ceaf99ed015 Alex Deucher      2015-04-20   959  
d4e8ad908b2095 Christian König   2022-09-08   960  	amdgpu_cs_get_threshold_for_moves(p->adev, &p->bytes_moved_threshold,
d4e8ad908b2095 Christian König   2022-09-08   961  					  &p->bytes_moved_vis_threshold);
d4e8ad908b2095 Christian König   2022-09-08   962  	p->bytes_moved = 0;
d4e8ad908b2095 Christian König   2022-09-08   963  	p->bytes_moved_vis = 0;
9a1b3af10d6268 Monk Liu          2017-03-08   964  
50661eb1a2c88c Felix Kuehling    2024-01-03   965  	r = amdgpu_vm_validate(p->adev, &fpriv->vm, NULL,
d4e8ad908b2095 Christian König   2022-09-08   966  			       amdgpu_cs_bo_validate, p);
d4e8ad908b2095 Christian König   2022-09-08   967  	if (r) {
cc51bbc7d7a7ff Mario Limonciello 2025-07-15   968  		drm_err(adev_to_drm(p->adev), "amdgpu_vm_validate() failed.\n");
ca6c1e210aa7d7 Christian König   2022-04-16   969  		goto out_free_user_pages;
65333e4429c60b Monk Liu          2017-03-27   970  	}
9a1b3af10d6268 Monk Liu          2017-03-08   971  
ca6c1e210aa7d7 Christian König   2022-04-16   972  	drm_exec_for_each_locked_object(&p->exec, index, obj) {
ca6c1e210aa7d7 Christian König   2022-04-16   973  		r = amdgpu_cs_bo_validate(p, gem_to_amdgpu_bo(obj));
ca6c1e210aa7d7 Christian König   2022-04-16   974  		if (unlikely(r))
ca6c1e210aa7d7 Christian König   2022-04-16   975  			goto out_free_user_pages;
ca6c1e210aa7d7 Christian König   2022-04-16   976  	}
b07c60c0652c49 Christian König   2016-01-31   977  
ca6c1e210aa7d7 Christian König   2022-04-16   978  	if (p->uf_bo) {
ca6c1e210aa7d7 Christian König   2022-04-16   979  		r = amdgpu_ttm_alloc_gart(&p->uf_bo->tbo);
ca6c1e210aa7d7 Christian König   2022-04-16   980  		if (unlikely(r))
ca6c1e210aa7d7 Christian König   2022-04-16   981  			goto out_free_user_pages;
4953b6b22ab9d7 Christian König   2022-09-13   982  
ca6c1e210aa7d7 Christian König   2022-04-16   983  		p->gang_leader->uf_addr += amdgpu_bo_gpu_offset(p->uf_bo);
d38ceaf99ed015 Alex Deucher      2015-04-20   984  	}
d38ceaf99ed015 Alex Deucher      2015-04-20   985  
4953b6b22ab9d7 Christian König   2022-09-13   986  	amdgpu_cs_report_moved_bytes(p->adev, p->bytes_moved,
4953b6b22ab9d7 Christian König   2022-09-13   987  				     p->bytes_moved_vis);
4624459c84d71e Christian König   2022-03-02   988  
4624459c84d71e Christian König   2022-03-02   989  	for (i = 0; i < p->gang_size; ++i)
4624459c84d71e Christian König   2022-03-02   990  		amdgpu_job_set_resources(p->jobs[i], p->bo_list->gds_obj,
4624459c84d71e Christian König   2022-03-02   991  					 p->bo_list->gws_obj,
4624459c84d71e Christian König   2022-03-02   992  					 p->bo_list->oa_obj);
4953b6b22ab9d7 Christian König   2022-09-13   993  	return 0;
4953b6b22ab9d7 Christian König   2022-09-13   994  
d4e8ad908b2095 Christian König   2022-09-08   995  out_free_user_pages:
d4e8ad908b2095 Christian König   2022-09-08   996  	amdgpu_bo_list_for_each_userptr_entry(e, p->bo_list) {
ca6c1e210aa7d7 Christian König   2022-04-16   997  		struct amdgpu_bo *bo = e->bo;
d38ceaf99ed015 Alex Deucher      2015-04-20   998  
fec8fdb54e8f74 Christian König   2022-11-10   999  		amdgpu_ttm_tt_get_user_pages_done(bo->tbo.ttm, e->range);
fec8fdb54e8f74 Christian König   2022-11-10  1000  		e->range = NULL;
d4e8ad908b2095 Christian König   2022-09-08  1001  	}
c70e2166967dc4 Philip Yang       2022-11-03  1002  	mutex_unlock(&p->bo_list->bo_list_mutex);
d4e8ad908b2095 Christian König   2022-09-08 @1003  	return r;
d38ceaf99ed015 Alex Deucher      2015-04-20  1004  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-02-02 20:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-02 20:02 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:1003 amdgpu_cs_parser_bos() warn: inconsistent returns '&p->bo_list->bo_list_mutex' Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®