All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525)
Date: Thu, 19 Mar 2026 11:38:57 +0800	[thread overview]
Message-ID: <202603191102.hueYyyPw-lkp@intel.com> (raw)

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

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@linaro.org>
To: oe-kbuild@lists.linux.dev, Akhil P Oommen <akhilpo@oss.qualcomm.com>
Cc: lkp@intel.com, oe-kbuild-all@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Rob Clark <robin.clark@oss.qualcomm.com>
Subject: drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525)
Date: Thu, 19 Mar 2026 12:19:09 +0300	[thread overview]
Message-ID: <202603191102.hueYyyPw-lkp@intel.com> (raw)
Message-ID: <20260319091909.OCOpWytgWBZoT-pbcaLM7hGHd-BLKF5oTnWlrQowF3c@z> (raw)

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


             reply	other threads:[~2026-03-19  3:41 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-19  3:38 kernel test robot [this message]
2026-03-19  9:19 ` drivers/gpu/drm/msm/adreno/a3xx_gpu.c:530 a3xx_gpu_init() warn: variable dereferenced before check 'pdev' (see line 525) Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202603191102.hueYyyPw-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.