From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: sound/soc/sdca/sdca_functions.c:2083 find_sdca_filesets() warn: potentially one past the end of array 'fileset_entries[j]'
Date: Mon, 16 Mar 2026 14:17:54 +0800 [thread overview]
Message-ID: <202603161443.vpLcJr2M-lkp@intel.com> (raw)
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
reply other threads:[~2026-03-16 6:18 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202603161443.vpLcJr2M-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.