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
next 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.