* drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
@ 2026-06-06 4:27 kernel test robot
2026-06-26 5:35 ` Datta, Shubhrajyoti
0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2026-06-06 4:27 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: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
CC: "Borislav Petkov (AMD)" <bp@alien8.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8e65320d91cdc3b241d4b94855c88459b91abf66
commit: 62a9fc50e8d947601ea3484e732b1a65a0a54b96 EDAC/versalnet: Refactor memory controller initialization and cleanup
date: 3 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 3 months ago
config: arm64-randconfig-r072-20260606 (https://download.01.org/0day-ci/archive/20260606/202606061200.j14yIFYw-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
smatch: v0.5.0-9185-gbcc58b9c
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
| Fixes: 62a9fc50e8d9 ("EDAC/versalnet: Refactor memory controller initialization and cleanup")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202606061200.j14yIFYw-lkp@intel.com/
smatch warnings:
drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
vim +785 drivers/edac/versalnet_edac.c
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 774
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 775 static int init_one_mc(struct mc_priv *priv, struct platform_device *pdev, int i)
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 776 {
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 777 u32 num_chans, rank, dwidth, config;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 778 struct edac_mc_layer layers[2];
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 779 struct mem_ctl_info *mci;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 780 struct device *dev;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 781 enum dev_type dt;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 782 char *name;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 783 int rc;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 784
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 @785 config = priv->adec[CONF + i * ADEC_NUM];
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 786 num_chans = FIELD_GET(MC5_NUM_CHANS_MASK, config);
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 787 rank = 1 << FIELD_GET(MC5_RANK_MASK, config);
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 788 dwidth = FIELD_GET(MC5_BUS_WIDTH_MASK, config);
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 789
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 790 switch (dwidth) {
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 791 case XDDR5_BUS_WIDTH_16:
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 792 dt = DEV_X16;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 793 break;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 794 case XDDR5_BUS_WIDTH_32:
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 795 dt = DEV_X32;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 796 break;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 797 case XDDR5_BUS_WIDTH_64:
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 798 dt = DEV_X64;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 799 break;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 800 default:
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 801 dt = DEV_UNKNOWN;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 802 }
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 803
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 804 if (dt == DEV_UNKNOWN)
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 805 return 0;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 806
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 807 /* Find the first enabled device and register that one. */
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 808 layers[0].type = EDAC_MC_LAYER_CHIP_SELECT;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 809 layers[0].size = rank;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 810 layers[0].is_virt_csrow = true;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 811 layers[1].type = EDAC_MC_LAYER_CHANNEL;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 812 layers[1].size = num_chans;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 813 layers[1].is_virt_csrow = false;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 814
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 815 rc = -ENOMEM;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 816 name = kzalloc(MC_NAME_LEN, GFP_KERNEL);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 817 if (!name)
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 818 return rc;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 819
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 820 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 821 if (!dev)
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 822 goto err_name_free;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 823
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 824 mci = edac_mc_alloc(i, ARRAY_SIZE(layers), layers, sizeof(struct mc_priv));
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 825 if (!mci) {
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 826 edac_printk(KERN_ERR, EDAC_MC, "Failed memory allocation for MC%d\n", i);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 827 goto err_dev_free;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 828 }
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 829
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 830 sprintf(name, "versal-net-ddrmc5-edac-%d", i);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 831
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 832 dev->init_name = name;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 833 dev->release = versal_edac_release;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 834
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 835 rc = device_register(dev);
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 836 if (rc)
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 837 goto err_mc_free;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 838
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 839 mci->pdev = dev;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 840 mc_init(mci, dev);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 841
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 842 rc = edac_mc_add_mc(mci);
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 843 if (rc) {
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 844 edac_printk(KERN_ERR, EDAC_MC, "Failed to register MC%d with EDAC core\n", i);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 845 goto err_unreg;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 846 }
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 847
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 848 priv->mci[i] = mci;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 849 priv->dwidth = dt;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 850
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 851 platform_set_drvdata(pdev, priv);
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 852
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 853 return 0;
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 854
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 855 err_unreg:
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 856 device_unregister(mci->pdev);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 857 err_mc_free:
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 858 edac_mc_free(mci);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 859 err_dev_free:
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 860 kfree(dev);
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 861 err_name_free:
62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 862 kfree(name);
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 863
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 864 return rc;
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 865 }
d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 866
:::::: The code at line 785 was first introduced by commit
:::::: d5fe2fec6c40dda03df8cc9b4a97de0b7e39f984 EDAC: Add a driver for the AMD Versal NET DDR controller
:::::: TO: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
:::::: CC: Borislav Petkov (AMD) <bp@alien8.de>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
2026-06-06 4:27 kernel test robot
@ 2026-06-26 5:35 ` Datta, Shubhrajyoti
2026-06-26 9:42 ` Dan Carpenter
0 siblings, 1 reply; 4+ messages in thread
From: Datta, Shubhrajyoti @ 2026-06-26 5:35 UTC (permalink / raw)
To: kernel test robot, oe-kbuild; +Cc: Dan Carpenter
On 6/6/2026 9:57 AM, kernel test robot wrote:
> BCC: lkp@intel.com
> CC: oe-kbuild-all@lists.linux.dev
> CC: linux-kernel@vger.kernel.org
> TO: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
> CC: "Borislav Petkov (AMD)" <bp@alien8.de>
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 8e65320d91cdc3b241d4b94855c88459b91abf66
> commit: 62a9fc50e8d947601ea3484e732b1a65a0a54b96 EDAC/versalnet: Refactor memory controller initialization and cleanup
> date: 3 months ago
> :::::: branch date: 3 hours ago
> :::::: commit date: 3 months ago
> config: arm64-randconfig-r072-20260606 (https://download.01.org/0day-ci/archive/20260606/202606061200.j14yIFYw-lkp@intel.com/config)
> compiler: aarch64-linux-gcc (GCC) 8.5.0
> smatch: v0.5.0-9185-gbcc58b9c
>
> 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
> | Fixes: 62a9fc50e8d9 ("EDAC/versalnet: Refactor memory controller initialization and cleanup")
> | Reported-by: kernel test robot <lkp@intel.com>
> | Reported-by: Dan Carpenter <error27@gmail.com>
> | Closes: https://lore.kernel.org/r/202606061200.j14yIFYw-lkp@intel.com/
>
> smatch warnings:
> drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
>
> vim +785 drivers/edac/versalnet_edac.c
>
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 774
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 775 static int init_one_mc(struct mc_priv *priv, struct platform_device *pdev, int i)
This is a static function called from
865 for (i = 0; i < NUM_CONTROLLERS; i++) {
866 rc = init_one_mc(priv, pdev, i);
867 if (rc) {
The NUM_CONTROLLERS is 8 so the value of i at max can be 8.
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 776 {
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 777 u32 num_chans, rank, dwidth, config;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 778 struct edac_mc_layer layers[2];
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 779 struct mem_ctl_info *mci;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 780 struct device *dev;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 781 enum dev_type dt;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 782 char *name;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 783 int rc;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 784
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 @785 config = priv->adec[CONF + i * ADEC_NUM];
The max offset can be 8*19 =152.
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 786 num_chans = FIELD_GET(MC5_NUM_CHANS_MASK, config);
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 787 rank = 1 << FIELD_GET(MC5_RANK_MASK, config);
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 788 dwidth = FIELD_GET(MC5_BUS_WIDTH_MASK, config);
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 789
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 790 switch (dwidth) {
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 791 case XDDR5_BUS_WIDTH_16:
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 792 dt = DEV_X16;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 793 break;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 794 case XDDR5_BUS_WIDTH_32:
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 795 dt = DEV_X32;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 796 break;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 797 case XDDR5_BUS_WIDTH_64:
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 798 dt = DEV_X64;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 799 break;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 800 default:
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 801 dt = DEV_UNKNOWN;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 802 }
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 803
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 804 if (dt == DEV_UNKNOWN)
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 805 return 0;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 806
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 807 /* Find the first enabled device and register that one. */
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 808 layers[0].type = EDAC_MC_LAYER_CHIP_SELECT;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 809 layers[0].size = rank;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 810 layers[0].is_virt_csrow = true;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 811 layers[1].type = EDAC_MC_LAYER_CHANNEL;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 812 layers[1].size = num_chans;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 813 layers[1].is_virt_csrow = false;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 814
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 815 rc = -ENOMEM;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 816 name = kzalloc(MC_NAME_LEN, GFP_KERNEL);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 817 if (!name)
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 818 return rc;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 819
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 820 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 821 if (!dev)
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 822 goto err_name_free;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 823
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 824 mci = edac_mc_alloc(i, ARRAY_SIZE(layers), layers, sizeof(struct mc_priv));
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 825 if (!mci) {
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 826 edac_printk(KERN_ERR, EDAC_MC, "Failed memory allocation for MC%d\n", i);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 827 goto err_dev_free;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 828 }
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 829
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 830 sprintf(name, "versal-net-ddrmc5-edac-%d", i);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 831
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 832 dev->init_name = name;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 833 dev->release = versal_edac_release;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 834
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 835 rc = device_register(dev);
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 836 if (rc)
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 837 goto err_mc_free;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 838
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 839 mci->pdev = dev;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 840 mc_init(mci, dev);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 841
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 842 rc = edac_mc_add_mc(mci);
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 843 if (rc) {
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 844 edac_printk(KERN_ERR, EDAC_MC, "Failed to register MC%d with EDAC core\n", i);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 845 goto err_unreg;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 846 }
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 847
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 848 priv->mci[i] = mci;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 849 priv->dwidth = dt;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 850
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 851 platform_set_drvdata(pdev, priv);
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 852
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 853 return 0;
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 854
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 855 err_unreg:
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 856 device_unregister(mci->pdev);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 857 err_mc_free:
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 858 edac_mc_free(mci);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 859 err_dev_free:
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 860 kfree(dev);
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 861 err_name_free:
> 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 862 kfree(name);
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 863
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 864 return rc;
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 865 }
> d5fe2fec6c40dd Shubhrajyoti Datta 2025-09-08 866
>
> :::::: The code at line 785 was first introduced by commit
> :::::: d5fe2fec6c40dda03df8cc9b4a97de0b7e39f984 EDAC: Add a driver for the AMD Versal NET DDR controller
>
> :::::: TO: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
> :::::: CC: Borislav Petkov (AMD) <bp@alien8.de>
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
2026-06-26 5:35 ` Datta, Shubhrajyoti
@ 2026-06-26 9:42 ` Dan Carpenter
0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2026-06-26 9:42 UTC (permalink / raw)
To: Datta, Shubhrajyoti; +Cc: kernel test robot, oe-kbuild
On Fri, Jun 26, 2026 at 11:05:11AM +0530, Datta, Shubhrajyoti wrote:
>
> On 6/6/2026 9:57 AM, kernel test robot wrote:
> > BCC: lkp@intel.com
> > CC: oe-kbuild-all@lists.linux.dev
> > CC: linux-kernel@vger.kernel.org
> > TO: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
> > CC: "Borislav Petkov (AMD)" <bp@alien8.de>
> >
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: 8e65320d91cdc3b241d4b94855c88459b91abf66
> > commit: 62a9fc50e8d947601ea3484e732b1a65a0a54b96 EDAC/versalnet: Refactor memory controller initialization and cleanup
> > date: 3 months ago
> > :::::: branch date: 3 hours ago
> > :::::: commit date: 3 months ago
> > config: arm64-randconfig-r072-20260606 (https://download.01.org/0day-ci/archive/20260606/202606061200.j14yIFYw-lkp@intel.com/config)
> > compiler: aarch64-linux-gcc (GCC) 8.5.0
> > smatch: v0.5.0-9185-gbcc58b9c
> >
> > 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
> > | Fixes: 62a9fc50e8d9 ("EDAC/versalnet: Refactor memory controller initialization and cleanup")
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Reported-by: Dan Carpenter <error27@gmail.com>
> > | Closes: https://lore.kernel.org/r/202606061200.j14yIFYw-lkp@intel.com/
> >
> > smatch warnings:
> > drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
> >
> > vim +785 drivers/edac/versalnet_edac.c
> >
> > 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 774
> > 62a9fc50e8d947 Shubhrajyoti Datta 2025-11-04 775 static int init_one_mc(struct mc_priv *priv, struct platform_device *pdev, int i)
>
> This is a static function called from
>
> 865 for (i = 0; i < NUM_CONTROLLERS; i++) {
> 866 rc = init_one_mc(priv, pdev, i);
> 867 if (rc) {
>
> The NUM_CONTROLLERS is 8 so the value of i at max can be 8.
>
Yeah...
The zero day bot doesn't do cross function analysis. It cann't
scale well enough.
These warnings are normally filtered by a human before being resent, but
since you're using lei you get the unfiltered patches that didn't go out
to the public. As more and more people adopt lei, we should probably
stop sending unfiltered warnings to the list...
regards,
dan carpenter
^ permalink raw reply [flat|nested] 4+ messages in thread
* drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
@ 2026-10-18 7:48 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2026-10-18 7:48 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
Unfiltered warning: this smatch report is sent as-is and has not been
reviewed for false positives, so please treat it with due skepticism.
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
CC: "Borislav Petkov (AMD)" <bp@alien8.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 70dd4ee72eb2d5793c62e71c14e3aba78e5a4e56
commit: 62a9fc50e8d947601ea3484e732b1a65a0a54b96 EDAC/versalnet: Refactor memory controller initialization and cleanup
date: 8 months ago
:::::: branch date: 20 hours ago
:::::: commit date: 8 months ago
config: arm64-randconfig-r2202-20261017 (https://download.01.org/0day-ci/archive/20261017/202610171355.FpDCX5PE-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
smatch: v0.5.0-9187-g5189e3fb
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
| Fixes: 62a9fc50e8d9 ("EDAC/versalnet: Refactor memory controller initialization and cleanup")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202610171355.FpDCX5PE-lkp@intel.com/
smatch warnings:
drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max
vim +785 drivers/edac/versalnet_edac.c
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 774
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 775 static int init_one_mc(struct mc_priv *priv, struct platform_device *pdev, int i)
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 776 {
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 777 u32 num_chans, rank, dwidth, config;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 778 struct edac_mc_layer layers[2];
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 779 struct mem_ctl_info *mci;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 780 struct device *dev;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 781 enum dev_type dt;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 782 char *name;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 783 int rc;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 784
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 @785 config = priv->adec[CONF + i * ADEC_NUM];
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 786 num_chans = FIELD_GET(MC5_NUM_CHANS_MASK, config);
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 787 rank = 1 << FIELD_GET(MC5_RANK_MASK, config);
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 788 dwidth = FIELD_GET(MC5_BUS_WIDTH_MASK, config);
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 789
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 790 switch (dwidth) {
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 791 case XDDR5_BUS_WIDTH_16:
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 792 dt = DEV_X16;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 793 break;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 794 case XDDR5_BUS_WIDTH_32:
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 795 dt = DEV_X32;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 796 break;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 797 case XDDR5_BUS_WIDTH_64:
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 798 dt = DEV_X64;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 799 break;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 800 default:
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 801 dt = DEV_UNKNOWN;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 802 }
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 803
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 804 if (dt == DEV_UNKNOWN)
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 805 return 0;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 806
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 807 /* Find the first enabled device and register that one. */
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 808 layers[0].type = EDAC_MC_LAYER_CHIP_SELECT;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 809 layers[0].size = rank;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 810 layers[0].is_virt_csrow = true;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 811 layers[1].type = EDAC_MC_LAYER_CHANNEL;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 812 layers[1].size = num_chans;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 813 layers[1].is_virt_csrow = false;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 814
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 815 rc = -ENOMEM;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 816 name = kzalloc(MC_NAME_LEN, GFP_KERNEL);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 817 if (!name)
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 818 return rc;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 819
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 820 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 821 if (!dev)
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 822 goto err_name_free;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 823
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 824 mci = edac_mc_alloc(i, ARRAY_SIZE(layers), layers, sizeof(struct mc_priv));
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 825 if (!mci) {
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 826 edac_printk(KERN_ERR, EDAC_MC, "Failed memory allocation for MC%d\n", i);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 827 goto err_dev_free;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 828 }
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 829
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 830 sprintf(name, "versal-net-ddrmc5-edac-%d", i);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 831
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 832 dev->init_name = name;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 833 dev->release = versal_edac_release;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 834
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 835 rc = device_register(dev);
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 836 if (rc)
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 837 goto err_mc_free;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 838
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 839 mci->pdev = dev;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 840 mc_init(mci, dev);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 841
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 842 rc = edac_mc_add_mc(mci);
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 843 if (rc) {
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 844 edac_printk(KERN_ERR, EDAC_MC, "Failed to register MC%d with EDAC core\n", i);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 845 goto err_unreg;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 846 }
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 847
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 848 priv->mci[i] = mci;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 849 priv->dwidth = dt;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 850
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 851 platform_set_drvdata(pdev, priv);
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 852
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 853 return 0;
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 854
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 855 err_unreg:
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 856 device_unregister(mci->pdev);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 857 err_mc_free:
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 858 edac_mc_free(mci);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 859 err_dev_free:
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 860 kfree(dev);
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 861 err_name_free:
62a9fc50e8d9476 Shubhrajyoti Datta 2025-11-04 862 kfree(name);
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 863
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 864 return rc;
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 865 }
d5fe2fec6c40dda Shubhrajyoti Datta 2025-09-08 866
:::::: The code at line 785 was first introduced by commit
:::::: d5fe2fec6c40dda03df8cc9b4a97de0b7e39f984 EDAC: Add a driver for the AMD Versal NET DDR controller
:::::: TO: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
:::::: CC: Borislav Petkov (AMD) <bp@alien8.de>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-10-18 7:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-18 7:48 drivers/edac/versalnet_edac.c:785 init_one_mc() error: buffer overflow 'priv->adec' 152 <= s32max kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2026-06-06 4:27 kernel test robot
2026-06-26 5:35 ` Datta, Shubhrajyoti
2026-06-26 9:42 ` 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.