All of lore.kernel.org
 help / color / mirror / Atom feed
* sound/soc/sdca/sdca_functions.c:2083 find_sdca_filesets() warn: potentially one past the end of array 'fileset_entries[j]'
@ 2026-03-16  6:17 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-03-16  6:17 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: Maciej Strozek <mstrozek@opensource.cirrus.com>
CC: Mark Brown <broonie@kernel.org>
CC: Bard Liao <yung-chuan.liao@linux.intel.com>
CC: Charles Keepax <ckeepax@opensource.cirrus.com>
CC: "Pierre-Louis Bossart" <pierre-louis.bossart@linux.dev>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f338e77383789c0cae23ca3d48adcc5e9e137e3c
commit: c4d096c3ca425562192a3626c30e82651d0f2c1c ASoC: SDCA: Add SDCA FDL data parsing
date:   5 months ago
:::::: branch date: 9 hours ago
:::::: commit date: 5 months ago
config: i386-randconfig-141-20260316 (https://download.01.org/0day-ci/archive/20260316/202603161443.vpLcJr2M-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
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/202603161443.vpLcJr2M-lkp@intel.com/

smatch warnings:
sound/soc/sdca/sdca_functions.c:2083 find_sdca_filesets() warn: potentially one past the end of array 'fileset_entries[j]'
sound/soc/sdca/sdca_functions.c:2083 find_sdca_filesets() warn: potentially one past the end of array 'fileset_entries[j]'

vim +2083 sound/soc/sdca/sdca_functions.c

f87c2a27503312 Charles Keepax 2025-02-05  2012  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2013  static int find_sdca_filesets(struct device *dev, struct sdw_slave *sdw,
c4d096c3ca4255 Maciej Strozek 2025-10-20  2014  			      struct fwnode_handle *function_node,
c4d096c3ca4255 Maciej Strozek 2025-10-20  2015  			      struct sdca_function_data *function)
c4d096c3ca4255 Maciej Strozek 2025-10-20  2016  {
c4d096c3ca4255 Maciej Strozek 2025-10-20  2017  	static const int mult_fileset = 3;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2018  	char fileset_name[SDCA_PROPERTY_LENGTH];
c4d096c3ca4255 Maciej Strozek 2025-10-20  2019  	u32 *filesets_list __free(kfree) = NULL;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2020  	struct sdca_fdl_set *sets;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2021  	int num_sets;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2022  	int i, j;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2023  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2024  	num_sets = fwnode_property_count_u32(function_node,
c4d096c3ca4255 Maciej Strozek 2025-10-20  2025  					     "mipi-sdca-file-set-id-list");
c4d096c3ca4255 Maciej Strozek 2025-10-20  2026  	if (num_sets == 0 || num_sets == -EINVAL) {
c4d096c3ca4255 Maciej Strozek 2025-10-20  2027  		return 0;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2028  	} else if (num_sets < 0) {
c4d096c3ca4255 Maciej Strozek 2025-10-20  2029  		dev_err(dev, "%pfwP: failed to read file set list: %d\n",
c4d096c3ca4255 Maciej Strozek 2025-10-20  2030  			function_node, num_sets);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2031  		return num_sets;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2032  	}
c4d096c3ca4255 Maciej Strozek 2025-10-20  2033  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2034  	filesets_list = kcalloc(num_sets, sizeof(u32), GFP_KERNEL);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2035  	if (!filesets_list)
c4d096c3ca4255 Maciej Strozek 2025-10-20  2036  		return -ENOMEM;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2037  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2038  	fwnode_property_read_u32_array(function_node, "mipi-sdca-file-set-id-list",
c4d096c3ca4255 Maciej Strozek 2025-10-20  2039  				       filesets_list, num_sets);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2040  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2041  	sets = devm_kcalloc(dev, num_sets, sizeof(struct sdca_fdl_set), GFP_KERNEL);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2042  	if (!sets)
c4d096c3ca4255 Maciej Strozek 2025-10-20  2043  		return -ENOMEM;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2044  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2045  	for (i = 0; i < num_sets; i++) {
c4d096c3ca4255 Maciej Strozek 2025-10-20  2046  		u32 *fileset_entries __free(kfree) = NULL;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2047  		struct sdca_fdl_set *set = &sets[i];
c4d096c3ca4255 Maciej Strozek 2025-10-20  2048  		struct sdca_fdl_file *files;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2049  		int num_files, num_entries;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2050  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2051  		snprintf(fileset_name, sizeof(fileset_name),
c4d096c3ca4255 Maciej Strozek 2025-10-20  2052  			 "mipi-sdca-file-set-id-0x%X", filesets_list[i]);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2053  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2054  		num_entries = fwnode_property_count_u32(function_node, fileset_name);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2055  		if (num_entries <= 0) {
c4d096c3ca4255 Maciej Strozek 2025-10-20  2056  			dev_err(dev, "%pfwP: file set %d missing entries: %d\n",
c4d096c3ca4255 Maciej Strozek 2025-10-20  2057  				function_node, filesets_list[i], num_entries);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2058  			return -EINVAL;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2059  		} else if (num_entries % mult_fileset != 0) {
c4d096c3ca4255 Maciej Strozek 2025-10-20  2060  			dev_err(dev, "%pfwP: file set %d files not multiple of %d\n",
c4d096c3ca4255 Maciej Strozek 2025-10-20  2061  				function_node, filesets_list[i], mult_fileset);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2062  			return -EINVAL;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2063  		}
c4d096c3ca4255 Maciej Strozek 2025-10-20  2064  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2065  		dev_info(dev, "fileset: %#x\n", filesets_list[i]);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2066  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2067  		files = devm_kcalloc(dev, num_entries / mult_fileset,
c4d096c3ca4255 Maciej Strozek 2025-10-20  2068  				     sizeof(struct sdca_fdl_file), GFP_KERNEL);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2069  		if (!files)
c4d096c3ca4255 Maciej Strozek 2025-10-20  2070  			return -ENOMEM;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2071  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2072  		fileset_entries = kcalloc(num_entries, sizeof(u32), GFP_KERNEL);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2073  		if (!fileset_entries)
c4d096c3ca4255 Maciej Strozek 2025-10-20  2074  			return -ENOMEM;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2075  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2076  		fwnode_property_read_u32_array(function_node, fileset_name,
c4d096c3ca4255 Maciej Strozek 2025-10-20  2077  					       fileset_entries, num_entries);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2078  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2079  		for (j = 0, num_files = 0; j < num_entries; num_files++) {
c4d096c3ca4255 Maciej Strozek 2025-10-20  2080  			struct sdca_fdl_file *file = &files[num_files];
c4d096c3ca4255 Maciej Strozek 2025-10-20  2081  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2082  			file->vendor_id = fileset_entries[j++];
c4d096c3ca4255 Maciej Strozek 2025-10-20 @2083  			file->file_id = fileset_entries[j++];
c4d096c3ca4255 Maciej Strozek 2025-10-20  2084  			file->fdl_offset = fileset_entries[j++];
c4d096c3ca4255 Maciej Strozek 2025-10-20  2085  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2086  			dev_info(dev, "file: %#x, vendor: %#x, offset: %#x\n",
c4d096c3ca4255 Maciej Strozek 2025-10-20  2087  				 file->file_id, file->vendor_id, file->fdl_offset);
c4d096c3ca4255 Maciej Strozek 2025-10-20  2088  		}
c4d096c3ca4255 Maciej Strozek 2025-10-20  2089  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2090  		set->id = filesets_list[i];
c4d096c3ca4255 Maciej Strozek 2025-10-20  2091  		set->num_files = num_files;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2092  		set->files = files;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2093  	}
c4d096c3ca4255 Maciej Strozek 2025-10-20  2094  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2095  	function->fdl_data.swft = sdw->sdca_data.swft;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2096  	function->fdl_data.num_sets = num_sets;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2097  	function->fdl_data.sets = sets;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2098  
c4d096c3ca4255 Maciej Strozek 2025-10-20  2099  	return 0;
c4d096c3ca4255 Maciej Strozek 2025-10-20  2100  }
c4d096c3ca4255 Maciej Strozek 2025-10-20  2101  

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-03-16  6:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-16  6:17 sound/soc/sdca/sdca_functions.c:2083 find_sdca_filesets() warn: potentially one past the end of array 'fileset_entries[j]' kernel test robot

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.