All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525)
@ 2026-03-19  9:19 ` Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-03-19  3:38 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Akhil P Oommen <akhilpo@oss.qualcomm.com>
CC: Rob Clark <robin.clark@oss.qualcomm.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   8a30aeb0d1b4e4aaf7f7bae72f20f2ae75385ccb
commit: 491fadb2b818e1d900229a1f8243de6458381306 drm/msm/adreno: Move adreno_gpu_func to catalogue
date:   4 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 4 months ago
config: arm64-randconfig-r073-20260319 (https://download.01.org/0day-ci/archive/20260319/202603191102.hueYyyPw-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 4abb927bacf37f18f6359a41639a6d1b3bffffb5)
smatch: v0.5.0-9004-gb810ac53

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 <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603191102.hueYyyPw-lkp@intel.com/

smatch warnings:
drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525)
drivers/gpu/drm/msm/adreno/a2xx_gpu.c:503 a2xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 500)
drivers/gpu/drm/msm/adreno/a4xx_gpu.c:642 a4xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 637)

vim +/pdev +530 drivers/gpu/drm/msm/adreno/a3xx_gpu.c

70c70f091b1ffd Rob Clark      2014-05-30  517  
491fadb2b818e1 Akhil P Oommen 2025-11-18  518  static struct msm_gpu *a3xx_gpu_init(struct drm_device *dev)
7198e6b03155f6 Rob Clark      2013-07-19  519  {
7198e6b03155f6 Rob Clark      2013-07-19  520  	struct a3xx_gpu *a3xx_gpu = NULL;
55459968176f13 Rob Clark      2013-12-05  521  	struct adreno_gpu *adreno_gpu;
7198e6b03155f6 Rob Clark      2013-07-19  522  	struct msm_gpu *gpu;
060530f1ea6740 Rob Clark      2014-03-03  523  	struct msm_drm_private *priv = dev->dev_private;
060530f1ea6740 Rob Clark      2014-03-03  524  	struct platform_device *pdev = priv->gpu_pdev;
491fadb2b818e1 Akhil P Oommen 2025-11-18 @525  	struct adreno_platform_config *config = pdev->dev.platform_data;
5785dd7a8ef0de Akhil P Oommen 2020-10-28  526  	struct icc_path *ocmem_icc_path;
5785dd7a8ef0de Akhil P Oommen 2020-10-28  527  	struct icc_path *icc_path;
7198e6b03155f6 Rob Clark      2013-07-19  528  	int ret;
7198e6b03155f6 Rob Clark      2013-07-19  529  
7198e6b03155f6 Rob Clark      2013-07-19 @530  	if (!pdev) {
6a41da17e87dee Mamta Shukla   2018-10-20  531  		DRM_DEV_ERROR(dev->dev, "no a3xx device\n");
7198e6b03155f6 Rob Clark      2013-07-19  532  		ret = -ENXIO;
7198e6b03155f6 Rob Clark      2013-07-19  533  		goto fail;
7198e6b03155f6 Rob Clark      2013-07-19  534  	}
7198e6b03155f6 Rob Clark      2013-07-19  535  
7198e6b03155f6 Rob Clark      2013-07-19  536  	a3xx_gpu = kzalloc(sizeof(*a3xx_gpu), GFP_KERNEL);
7198e6b03155f6 Rob Clark      2013-07-19  537  	if (!a3xx_gpu) {
7198e6b03155f6 Rob Clark      2013-07-19  538  		ret = -ENOMEM;
7198e6b03155f6 Rob Clark      2013-07-19  539  		goto fail;
7198e6b03155f6 Rob Clark      2013-07-19  540  	}
7198e6b03155f6 Rob Clark      2013-07-19  541  
55459968176f13 Rob Clark      2013-12-05  542  	adreno_gpu = &a3xx_gpu->base;
55459968176f13 Rob Clark      2013-12-05  543  	gpu = &adreno_gpu->base;
7198e6b03155f6 Rob Clark      2013-07-19  544  
70c70f091b1ffd Rob Clark      2014-05-30  545  	gpu->perfcntrs = perfcntrs;
70c70f091b1ffd Rob Clark      2014-05-30  546  	gpu->num_perfcntrs = ARRAY_SIZE(perfcntrs);
70c70f091b1ffd Rob Clark      2014-05-30  547  
3bcefb0497f9fc Rob Clark      2014-09-05  548  	adreno_gpu->registers = a3xx_registers;
3bcefb0497f9fc Rob Clark      2014-09-05  549  
491fadb2b818e1 Akhil P Oommen 2025-11-18  550  	ret = adreno_gpu_init(dev, pdev, adreno_gpu, config->info->funcs, 1);
7198e6b03155f6 Rob Clark      2013-07-19  551  	if (ret)
7198e6b03155f6 Rob Clark      2013-07-19  552  		goto fail;
7198e6b03155f6 Rob Clark      2013-07-19  553  
55459968176f13 Rob Clark      2013-12-05  554  	/* if needed, allocate gmem: */
3d6ab124a4d5de Luca Weiss     2024-01-21  555  	if (adreno_is_a330(adreno_gpu) || adreno_is_a305b(adreno_gpu)) {
26c0b26dcd005d Brian Masney   2019-08-23  556  		ret = adreno_gpu_ocmem_init(&adreno_gpu->base.pdev->dev,
26c0b26dcd005d Brian Masney   2019-08-23  557  					    adreno_gpu, &a3xx_gpu->ocmem);
26c0b26dcd005d Brian Masney   2019-08-23  558  		if (ret)
26c0b26dcd005d Brian Masney   2019-08-23  559  			goto fail;
55459968176f13 Rob Clark      2013-12-05  560  	}
55459968176f13 Rob Clark      2013-12-05  561  
5785dd7a8ef0de Akhil P Oommen 2020-10-28  562  	icc_path = devm_of_icc_get(&pdev->dev, "gfx-mem");
3eda901995371d Dan Carpenter  2021-10-01  563  	if (IS_ERR(icc_path)) {
3eda901995371d Dan Carpenter  2021-10-01  564  		ret = PTR_ERR(icc_path);
5785dd7a8ef0de Akhil P Oommen 2020-10-28  565  		goto fail;
3eda901995371d Dan Carpenter  2021-10-01  566  	}
5785dd7a8ef0de Akhil P Oommen 2020-10-28  567  
5785dd7a8ef0de Akhil P Oommen 2020-10-28  568  	ocmem_icc_path = devm_of_icc_get(&pdev->dev, "ocmem");
3eda901995371d Dan Carpenter  2021-10-01  569  	if (IS_ERR(ocmem_icc_path)) {
3eda901995371d Dan Carpenter  2021-10-01  570  		ret = PTR_ERR(ocmem_icc_path);
5785dd7a8ef0de Akhil P Oommen 2020-10-28  571  		/* allow -ENODATA, ocmem icc is optional */
5785dd7a8ef0de Akhil P Oommen 2020-10-28  572  		if (ret != -ENODATA)
5785dd7a8ef0de Akhil P Oommen 2020-10-28  573  			goto fail;
5785dd7a8ef0de Akhil P Oommen 2020-10-28  574  		ocmem_icc_path = NULL;
5785dd7a8ef0de Akhil P Oommen 2020-10-28  575  	}
5785dd7a8ef0de Akhil P Oommen 2020-10-28  576  
5785dd7a8ef0de Akhil P Oommen 2020-10-28  577  
d163ba0b65f2e4 Brian Masney   2019-11-21  578  	/*
d163ba0b65f2e4 Brian Masney   2019-11-21  579  	 * Set the ICC path to maximum speed for now by multiplying the fastest
d163ba0b65f2e4 Brian Masney   2019-11-21  580  	 * frequency by the bus width (8). We'll want to scale this later on to
d163ba0b65f2e4 Brian Masney   2019-11-21  581  	 * improve battery life.
d163ba0b65f2e4 Brian Masney   2019-11-21  582  	 */
5785dd7a8ef0de Akhil P Oommen 2020-10-28  583  	icc_set_bw(icc_path, 0, Bps_to_icc(gpu->fast_rate) * 8);
5785dd7a8ef0de Akhil P Oommen 2020-10-28  584  	icc_set_bw(ocmem_icc_path, 0, Bps_to_icc(gpu->fast_rate) * 8);
d163ba0b65f2e4 Brian Masney   2019-11-21  585  
871d812aa43e63 Rob Clark      2013-11-16  586  	return gpu;
7198e6b03155f6 Rob Clark      2013-07-19  587  
7198e6b03155f6 Rob Clark      2013-07-19  588  fail:
7198e6b03155f6 Rob Clark      2013-07-19  589  	if (a3xx_gpu)
7198e6b03155f6 Rob Clark      2013-07-19  590  		a3xx_destroy(&a3xx_gpu->base.base);
7198e6b03155f6 Rob Clark      2013-07-19  591  
7198e6b03155f6 Rob Clark      2013-07-19  592  	return ERR_PTR(ret);
7198e6b03155f6 Rob Clark      2013-07-19  593  }
491fadb2b818e1 Akhil P Oommen 2025-11-18  594  

:::::: The code at line 530 was first introduced by commit
:::::: 7198e6b03155f6dadecadba004eb83b81a6ffe4c drm/msm: add a3xx gpu support

:::::: TO: Rob Clark <robdclark@gmail.com>
:::::: CC: Rob Clark <robdclark@gmail.com>

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525)
@ 2026-03-19  9:19 ` Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2026-03-19  9:19 UTC (permalink / raw)
  To: oe-kbuild, Akhil P Oommen; +Cc: lkp, oe-kbuild-all, linux-kernel, Rob Clark

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   8a30aeb0d1b4e4aaf7f7bae72f20f2ae75385ccb
commit: 491fadb2b818e1d900229a1f8243de6458381306 drm/msm/adreno: Move adreno_gpu_func to catalogue
config: arm64-randconfig-r073-20260319 (https://download.01.org/0day-ci/archive/20260319/202603191102.hueYyyPw-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 4abb927bacf37f18f6359a41639a6d1b3bffffb5)
smatch: v0.5.0-9004-gb810ac53

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/202603191102.hueYyyPw-lkp@intel.com/

smatch warnings:
drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525)
drivers/gpu/drm/msm/adreno/a2xx_gpu.c:503 a2xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 500)
drivers/gpu/drm/msm/adreno/a4xx_gpu.c:642 a4xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 637)

vim +/pdev +530 drivers/gpu/drm/msm/adreno/a3xx_gpu.c

491fadb2b818e1 Akhil P Oommen 2025-11-18  518  static struct msm_gpu *a3xx_gpu_init(struct drm_device *dev)
7198e6b03155f6 Rob Clark      2013-07-19  519  {
7198e6b03155f6 Rob Clark      2013-07-19  520  	struct a3xx_gpu *a3xx_gpu = NULL;
55459968176f13 Rob Clark      2013-12-05  521  	struct adreno_gpu *adreno_gpu;
7198e6b03155f6 Rob Clark      2013-07-19  522  	struct msm_gpu *gpu;
060530f1ea6740 Rob Clark      2014-03-03  523  	struct msm_drm_private *priv = dev->dev_private;
060530f1ea6740 Rob Clark      2014-03-03  524  	struct platform_device *pdev = priv->gpu_pdev;
491fadb2b818e1 Akhil P Oommen 2025-11-18 @525  	struct adreno_platform_config *config = pdev->dev.platform_data;
                                                                                        ^^^^^^
Patch adds a dereference.

5785dd7a8ef0de Akhil P Oommen 2020-10-28  526  	struct icc_path *ocmem_icc_path;
5785dd7a8ef0de Akhil P Oommen 2020-10-28  527  	struct icc_path *icc_path;
7198e6b03155f6 Rob Clark      2013-07-19  528  	int ret;
7198e6b03155f6 Rob Clark      2013-07-19  529  
7198e6b03155f6 Rob Clark      2013-07-19 @530  	if (!pdev) {
                                                     ^^^^
But the old code assumed pdev could be NULL.  Probably the NULL checks
are unnecessary.

6a41da17e87dee Mamta Shukla   2018-10-20  531  		DRM_DEV_ERROR(dev->dev, "no a3xx device\n");
7198e6b03155f6 Rob Clark      2013-07-19  532  		ret = -ENXIO;
7198e6b03155f6 Rob Clark      2013-07-19  533  		goto fail;
7198e6b03155f6 Rob Clark      2013-07-19  534  	}

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-03-19  9:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-19  3:38 drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525) kernel test robot
2026-03-19  9:19 ` Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.