Hi Christoph,
I love your patch! Perhaps something to improve:
[auto build test WARNING on block/for-next]
[also build test WARNING on v5.14-rc6 next-20210819]
[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]
url:
https://github.com/0day-ci/linux/commits/Christoph-Hellwig/loop-remove-th...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
config: x86_64-rhel-8.3-kselftests (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
#
https://github.com/0day-ci/linux/commit/4bc5016d77d7be3372940a65169beaec5...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Christoph-Hellwig/loop-remove-the-ioctl-method-in-loop_func_table/20210818-152618
git checkout 4bc5016d77d7be3372940a65169beaec5ed6aaf4
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/block/loop.c:273:23: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned int @@ got restricted
__le32 [usertype] @@
drivers/block/loop.c:273:23: sparse: expected unsigned
int
drivers/block/loop.c:273:23: sparse: got restricted __le32 [usertype]
vim +273 drivers/block/loop.c
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 234
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 235 static int cryptoloop_transfer(struct
loop_device *lo, int cmd,
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 236 struct page *raw_page, unsigned
raw_off, struct page *loop_page,
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 237 unsigned loop_off, int size, sector_t
IV)
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 238 {
4bc5016d77d7be Christoph Hellwig 2021-08-18 239 struct crypto_sync_skcipher *tfm =
lo->lo_encrypt_tfm;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 240 SYNC_SKCIPHER_REQUEST_ON_STACK(req,
tfm);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 241 struct scatterlist sg_out;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 242 struct scatterlist sg_in;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 243
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 244 encdec_cbc_t encdecfunc;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 245 struct page *in_page, *out_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 246 unsigned in_offs, out_offs;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 247 int err;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 248
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 249 skcipher_request_set_sync_tfm(req,
tfm);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 250 skcipher_request_set_callback(req,
CRYPTO_TFM_REQ_MAY_SLEEP,
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 251 NULL, NULL);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 252
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 253 sg_init_table(&sg_out, 1);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 254 sg_init_table(&sg_in, 1);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 255
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 256 if (cmd == READ) {
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 257 in_page = raw_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 258 in_offs = raw_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 259 out_page = loop_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 260 out_offs = loop_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 261 encdecfunc = crypto_skcipher_decrypt;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 262 } else {
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 263 in_page = loop_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 264 in_offs = loop_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 265 out_page = raw_page;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 266 out_offs = raw_off;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 267 encdecfunc = crypto_skcipher_encrypt;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 268 }
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 269
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 270 while (size > 0) {
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 271 const int sz = min(size,
LOOP_IV_SECTOR_SIZE);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 272 u32 iv[4] = { 0, };
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 @273 iv[0] = cpu_to_le32(IV &
0xffffffff);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 274
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 275 sg_set_page(&sg_in, in_page, sz,
in_offs);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 276 sg_set_page(&sg_out, out_page, sz,
out_offs);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 277
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 278 skcipher_request_set_crypt(req,
&sg_in, &sg_out, sz, iv);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 279 err = encdecfunc(req);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 280 if (err)
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 281 goto out;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 282
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 283 IV++;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 284 size -= sz;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 285 in_offs += sz;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 286 out_offs += sz;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 287 }
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 288
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 289 err = 0;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 290 out:
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 291 skcipher_request_zero(req);
4bc5016d77d7be Christoph Hellwig 2021-08-18 292 pr_err_ratelimited("loop: Transfer
error at byte offset %llu, length %i.\n",
4bc5016d77d7be Christoph Hellwig 2021-08-18 293 IV << 9, size);
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 294 return err;
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 295 }
a4d25ed5a46e4a Christoph Hellwig 2021-08-18 296
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org