Re: [PATCH v2 1/3] dm-inlinecrypt: Add inline encryption support

kernel test robot
2024-09-17T06:38:55Z

Hi Md,

kernel test robot noticed the following build warnings:

[auto build test WARNING on device-mapper-dm/for-next]
[also build test WARNING on axboe-block/for-next linus/master song-md/md-next v6.11 next-20240916]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Md-Sadre-Alam/dm-inlinecrypt-Add-inline-encryption-support/20240916-170452
base: https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git for-next
patch link: https://lore.kernel.org/r/20240916085741.1636554-2-quic_mdalam%40quicinc.com
patch subject: [PATCH v2 1/3] dm-inlinecrypt: Add inline encryption support
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20240917/202409171440.qx2iOkY3-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240917/202409171440.qx2iOkY3-lkp@intel.com/reproduce)

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>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409171440.qx2iOkY3-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/md/dm-inline-crypt.c:198:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
198 | if ((sscanf(argv[2], "%llu%c", &tmpll, &dummy) != 1) ||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
199 | (tmpll & ((cc->sector_size >> SECTOR_SHIFT) - 1))) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/md/dm-inline-crypt.c:250:9: note: uninitialized use occurs here
250 | return ret;
| ^~~
drivers/md/dm-inline-crypt.c:198:2: note: remove the 'if' if its condition is always false
198 | if ((sscanf(argv[2], "%llu%c", &tmpll, &dummy) != 1) ||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
199 | (tmpll & ((cc->sector_size >> SECTOR_SHIFT) - 1))) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
200 | ti->error = "Invalid iv_offset sector";
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
201 | goto bad;
| ~~~~~~~~~
202 | }
| ~
>> drivers/md/dm-inline-crypt.c:198:6: warning: variable 'ret' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
198 | if ((sscanf(argv[2], "%llu%c", &tmpll, &dummy) != 1) ||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/md/dm-inline-crypt.c:250:9: note: uninitialized use occurs here
250 | return ret;
| ^~~
drivers/md/dm-inline-crypt.c:198:6: note: remove the '||' if its condition is always false
198 | if ((sscanf(argv[2], "%llu%c", &tmpll, &dummy) != 1) ||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/md/dm-inline-crypt.c:178:9: note: initialize the variable 'ret' to silence this warning
178 | int ret;
| ^
| = 0
2 warnings generated.

vim +198 drivers/md/dm-inline-crypt.c

168
169 static int inlinecrypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
170 {
171 struct inlinecrypt_config *cc;
172 char *cipher_api = NULL;
173 char *cipher, *chainmode;
174 unsigned long long tmpll;
175 char *ivmode;
176 int key_size;
177 char dummy;
178 int ret;
179
180 if (argc < 5) {
181 ti->error = "Not enough arguments";
182 return -EINVAL;
183 }
184
185 key_size = strlen(argv[1]) >> 1;
186
187 cc = kzalloc(struct_size(cc, key, key_size), GFP_KERNEL);
188 if (!cc) {
189 ti->error = "Cannot allocate encryption context";
190 return -ENOMEM;
191 }
192 cc->key_size = key_size;
193 cc->sector_size = (1 << SECTOR_SHIFT);
194 cc->sector_shift = 0;
195
196 ti->private = cc;
197
> 198 if ((sscanf(argv[2], "%llu%c", &tmpll, &dummy) != 1) ||
199 (tmpll & ((cc->sector_size >> SECTOR_SHIFT) - 1))) {
200 ti->error = "Invalid iv_offset sector";
201 goto bad;
202 }
203 cc->iv_offset = tmpll;
204
205 ret = dm_get_device(ti, argv[3], dm_table_get_mode(ti->table),
206 &cc->dev);
207 if (ret) {
208 ti->error = "Device lookup failed";
209 goto bad;
210 }
211
212 ret = -EINVAL;
213 if (sscanf(argv[4], "%llu%c", &tmpll, &dummy) != 1 ||
214 tmpll != (sector_t)tmpll) {
215 ti->error = "Invalid device sector";
216 goto bad;
217 }
218
219 cc->start = tmpll;
220
221 cipher = strsep(&argv[0], "-");
222 chainmode = strsep(&argv[0], "-");
223 ivmode = strsep(&argv[0], "-");
224
225 cipher_api = kmalloc(CRYPTO_MAX_ALG_NAME, GFP_KERNEL);
226 if (!cipher_api)
227 goto bad;
228
229 ret = snprintf(cipher_api, CRYPTO_MAX_ALG_NAME,
230 "%s(%s)", chainmode, cipher);
231 if (ret < 0 || ret >= CRYPTO_MAX_ALG_NAME) {
232 kfree(cipher_api);
233 ret = -ENOMEM;
234 goto bad;
235 }
236
237 ret = crypt_select_inline_crypt_mode(ti, cipher_api, ivmode);
238
239 /* Initialize and set key */
240 ret = inlinecrypt_set_key(cc, argv[1]);
241 if (ret < 0) {
242 ti->error = "Error decoding and setting key";
243 return ret;
244 }
245
246 return 0;
247 bad:
248 ti->error = "Error in inlinecrypt mapping";
249 inlinecrypt_dtr(ti);
250 return ret;
251 }
252

--
0-DAY CI Kernel Test Service