[android-common:android14-6.1 8/8] drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c:274 mlx5_devcom_get_peer_data_rcu() error: buffer overflow 'comp->device' 2 <= 2 (assuming for loop doesn't break)

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
BCC: [email protected]
CC: [email protected]
TO: [email protected]

tree:   https://android.googlesource.com/kernel/common android14-6.1
head:   e69716042404c1fdc90175146d84a7b1513b559c
commit: 362063df6ceec80b0b6798b61ae03504dcc125a5 [8/8] net/mlx5e: Fix deadlock in tc route query code
:::::: branch date: 2 days ago
:::::: commit date: 3 years, 2 months ago
config: i386-randconfig-141-20260715 (https://download.01.org/0day-ci/archive/20260715/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.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
| Reported-by: kernel test robot <[email protected]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

New smatch warnings:
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c:274 mlx5_devcom_get_peer_data_rcu() error: buffer overflow 'comp->device' 2 <= 2 (assuming for loop doesn't break)
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c:274 mlx5_devcom_get_peer_data_rcu() error: buffer overflow 'comp->device' 2 <= 2 (assuming for loop doesn't break)

Old smatch warnings:
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c:252 mlx5_devcom_get_peer_data() error: buffer overflow 'comp->device' 2 <= 2 (assuming for loop doesn't break)
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c:252 mlx5_devcom_get_peer_data() error: buffer overflow 'comp->device' 2 <= 2 (assuming for loop doesn't break)
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c:252 mlx5_devcom_get_peer_data() error: buffer overflow 'comp->device' 2 <= 2 (assuming for loop doesn't break)

vim +274 drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c

362063df6ceec8 Vlad Buslov 2023-03-31  254  
362063df6ceec8 Vlad Buslov 2023-03-31  255  void *mlx5_devcom_get_peer_data_rcu(struct mlx5_devcom *devcom, enum mlx5_devcom_components id)
362063df6ceec8 Vlad Buslov 2023-03-31  256  {
362063df6ceec8 Vlad Buslov 2023-03-31  257  	struct mlx5_devcom_component *comp;
362063df6ceec8 Vlad Buslov 2023-03-31  258  	int i;
362063df6ceec8 Vlad Buslov 2023-03-31  259  
362063df6ceec8 Vlad Buslov 2023-03-31  260  	if (IS_ERR_OR_NULL(devcom))
362063df6ceec8 Vlad Buslov 2023-03-31  261  		return NULL;
362063df6ceec8 Vlad Buslov 2023-03-31  262  
362063df6ceec8 Vlad Buslov 2023-03-31  263  	for (i = 0; i < MLX5_DEVCOM_PORTS_SUPPORTED; i++)
362063df6ceec8 Vlad Buslov 2023-03-31  264  		if (i != devcom->idx)
362063df6ceec8 Vlad Buslov 2023-03-31  265  			break;
362063df6ceec8 Vlad Buslov 2023-03-31  266  
362063df6ceec8 Vlad Buslov 2023-03-31  267  	comp = &devcom->priv->components[id];
362063df6ceec8 Vlad Buslov 2023-03-31  268  	/* This can change concurrently, however 'data' pointer will remain
362063df6ceec8 Vlad Buslov 2023-03-31  269  	 * valid for the duration of RCU read section.
362063df6ceec8 Vlad Buslov 2023-03-31  270  	 */
362063df6ceec8 Vlad Buslov 2023-03-31  271  	if (!READ_ONCE(comp->paired))
362063df6ceec8 Vlad Buslov 2023-03-31  272  		return NULL;
362063df6ceec8 Vlad Buslov 2023-03-31  273  
362063df6ceec8 Vlad Buslov 2023-03-31 @274  	return rcu_dereference(comp->device[i].data);
fadd59fc50d010 Aviv Heller 2018-12-04  275  }
fadd59fc50d010 Aviv Heller 2018-12-04  276  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.