drivers/base/regmap/regcache-maple.c:114:23: warning: 'upper_index' is used uninitialized

From: kernel test robot
Date: Sat May 27 2023 - 18:46:30 EST


Hi Mark,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4e893b5aa4ac2c8a56a40d18fe87e9d2295e5dcf
commit: f033c26de5a5734625d2dd1dc196745fae186f1b regmap: Add maple tree based register cache
date: 8 weeks ago
config: arc-randconfig-r043-20230528 (https://download.01.org/0day-ci/archive/20230528/202305280647.ufP2HjHe-lkp@xxxxxxxxx/config)
compiler: arceb-elf-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
mkdir -p ~/bin
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f033c26de5a5734625d2dd1dc196745fae186f1b
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout f033c26de5a5734625d2dd1dc196745fae186f1b
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 ~/bin/make.cross W=1 O=build_dir ARCH=arc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 ~/bin/make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash drivers/base/regmap/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202305280647.ufP2HjHe-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

drivers/base/regmap/regcache-maple.c: In function 'regcache_maple_drop':
>> drivers/base/regmap/regcache-maple.c:114:23: warning: 'upper_index' is used uninitialized [-Wuninitialized]
114 | unsigned long upper_index, upper_last;
| ^~~~~~~~~~~
>> drivers/base/regmap/regcache-maple.c:114:36: warning: 'upper_last' is used uninitialized [-Wuninitialized]
114 | unsigned long upper_index, upper_last;
| ^~~~~~~~~~
drivers/base/regmap/regcache-maple.c:113:23: warning: 'lower_index' is used uninitialized [-Wuninitialized]
113 | unsigned long lower_index, lower_last;
| ^~~~~~~~~~~
drivers/base/regmap/regcache-maple.c:113:36: warning: 'lower_last' is used uninitialized [-Wuninitialized]
113 | unsigned long lower_index, lower_last;
| ^~~~~~~~~~


vim +/upper_index +114 drivers/base/regmap/regcache-maple.c

106
107 static int regcache_maple_drop(struct regmap *map, unsigned int min,
108 unsigned int max)
109 {
110 struct maple_tree *mt = map->cache;
111 MA_STATE(mas, mt, min, max);
112 unsigned long *entry, *lower, *upper;
113 unsigned long lower_index, lower_last;
> 114 unsigned long upper_index, upper_last;
115 int ret;
116
117 lower = NULL;
118 upper = NULL;
119
120 mas_lock(&mas);
121
122 mas_for_each(&mas, entry, max) {
123 /*
124 * This is safe because the regmap lock means the
125 * Maple lock is redundant, but we need to take it due
126 * to lockdep asserts in the maple tree code.
127 */
128 mas_unlock(&mas);
129
130 /* Do we need to save any of this entry? */
131 if (mas.index < min) {
132 lower_index = mas.index;
133 lower_last = min -1;
134
135 lower = kmemdup(entry, ((min - mas.index) *
136 sizeof(unsigned long)),
137 GFP_KERNEL);
138 if (!lower) {
139 ret = -ENOMEM;
140 goto out;
141 }
142 }
143
144 if (mas.last > max) {
145 upper_index = max + 1;
146 upper_last = mas.last;
147
148 upper = kmemdup(&entry[max + 1],
149 ((mas.last - max) *
150 sizeof(unsigned long)),
151 GFP_KERNEL);
152 if (!upper) {
153 ret = -ENOMEM;
154 goto out;
155 }
156 }
157
158 kfree(entry);
159 mas_lock(&mas);
160 mas_erase(&mas);
161
162 /* Insert new nodes with the saved data */
163 if (lower) {
164 mas_set_range(&mas, lower_index, lower_last);
165 ret = mas_store_gfp(&mas, lower, GFP_KERNEL);
166 if (ret != 0)
167 goto out;
168 lower = NULL;
169 }
170
171 if (upper) {
172 mas_set_range(&mas, upper_index, upper_last);
173 ret = mas_store_gfp(&mas, upper, GFP_KERNEL);
174 if (ret != 0)
175 goto out;
176 upper = NULL;
177 }
178 }
179
180 out:
181 mas_unlock(&mas);
182 kfree(lower);
183 kfree(upper);
184
185 return ret;
186 }
187

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