From: kernel test robot <[email protected]>
To: Keith Busch <[email protected]>,
[email protected], [email protected],
[email protected]
Cc: [email protected], [email protected], [email protected],
[email protected], [email protected],
Keith Busch <[email protected]>
Subject: Re: [PATCHv2 1/4] block: bio-integrity: directly map user buffers
Date: Tue, 31 Oct 2023 10:46:25 +0800 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
Hi Keith,
kernel test robot noticed the following build errors:
[auto build test ERROR on axboe-block/for-next]
[also build test ERROR on linus/master v6.6 next-20231030]
[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/Keith-Busch/block-bio-integrity-directly-map-user-buffers/20231028-022107
base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
patch link: https://lore.kernel.org/r/20231027181929.2589937-2-kbusch%40meta.com
patch subject: [PATCHv2 1/4] block: bio-integrity: directly map user buffers
config: mips-allmodconfig (https://download.01.org/0day-ci/archive/20231031/[email protected]/config)
compiler: mips-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231031/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
block/bio-integrity.c: In function 'bio_integrity_map_user':
>> block/bio-integrity.c:294:72: error: passing argument 6 of 'iov_iter_extract_pages' from incompatible pointer type [-Werror=incompatible-pointer-types]
294 | bytes = iov_iter_extract_pages(&iter, &pages, len, nr_vecs, 0, &offs);
| ^~~~~
| |
| long unsigned int *
In file included from include/linux/bio.h:11,
from include/linux/blkdev.h:17,
from include/linux/blk-mq.h:5,
from include/linux/blk-integrity.h:5,
from block/bio-integrity.c:9:
include/linux/uio.h:400:40: note: expected 'size_t *' {aka 'unsigned int *'} but argument is of type 'long unsigned int *'
400 | size_t *offset0);
| ~~~~~~~~^~~~~~~
cc1: some warnings being treated as errors
vim +/iov_iter_extract_pages +294 block/bio-integrity.c
257
258 int bio_integrity_map_user(struct bio *bio, void __user *ubuf, unsigned int len,
259 u32 seed)
260 {
261 struct request_queue *q = bdev_get_queue(bio->bi_bdev);
262 unsigned long offs, align = q->dma_pad_mask | queue_dma_alignment(q);
263 int ret, direction, nr_vecs, i, j, folios = 0;
264 struct bio_vec stack_vec[UIO_FASTIOV];
265 struct bio_vec bv, *bvec = stack_vec;
266 struct page *stack_pages[UIO_FASTIOV];
267 struct page **pages = stack_pages;
268 struct bio_integrity_payload *bip;
269 struct iov_iter iter;
270 struct bvec_iter bi;
271 u32 bytes;
272
273 if (bio_integrity(bio))
274 return -EINVAL;
275 if (len >> SECTOR_SHIFT > queue_max_hw_sectors(q))
276 return -E2BIG;
277
278 if (bio_data_dir(bio) == READ)
279 direction = ITER_DEST;
280 else
281 direction = ITER_SOURCE;
282
283 iov_iter_ubuf(&iter, direction, ubuf, len);
284 nr_vecs = iov_iter_npages(&iter, BIO_MAX_VECS + 1);
285 if (nr_vecs > BIO_MAX_VECS)
286 return -E2BIG;
287 if (nr_vecs > UIO_FASTIOV) {
288 bvec = kcalloc(sizeof(*bvec), nr_vecs, GFP_KERNEL);
289 if (!bvec)
290 return -ENOMEM;
291 pages = NULL;
292 }
293
> 294 bytes = iov_iter_extract_pages(&iter, &pages, len, nr_vecs, 0, &offs);
295 if (unlikely(bytes < 0)) {
296 ret = bytes;
297 goto free_bvec;
298 }
299
300 for (i = 0; i < nr_vecs; i = j) {
301 size_t size = min_t(size_t, bytes, PAGE_SIZE - offs);
302 struct folio *folio = page_folio(pages[i]);
303
304 bytes -= size;
305 for (j = i + 1; j < nr_vecs; j++) {
306 size_t next = min_t(size_t, PAGE_SIZE, bytes);
307
308 if (page_folio(pages[j]) != folio ||
309 pages[j] != pages[j - 1] + 1)
310 break;
311 unpin_user_page(pages[j]);
312 size += next;
313 bytes -= next;
314 }
315
316 bvec_set_page(&bvec[folios], pages[i], size, offs);
317 offs = 0;
318 folios++;
319 }
320
321 if (pages != stack_pages)
322 kvfree(pages);
323
324 if (folios > queue_max_integrity_segments(q) ||
325 !iov_iter_is_aligned(&iter, align, align)) {
326 ret = bio_integrity_copy_user(bio, bvec, folios, len,
327 direction, seed);
328 if (ret)
329 goto release_pages;
330 return 0;
331 }
332
333 bip = bio_integrity_alloc(bio, GFP_KERNEL, folios);
334 if (IS_ERR(bip)) {
335 ret = PTR_ERR(bip);
336 goto release_pages;
337 }
338
339 memcpy(bip->bip_vec, bvec, folios * sizeof(*bvec));
340 if (bvec != stack_vec)
341 kfree(bvec);
342
343 bip->bip_flags |= BIP_INTEGRITY_USER;
344 bip->copy_vec = NULL;
345 return 0;
346
347 release_pages:
348 bi.bi_size = len;
349 for_each_bvec(bv, bvec, bi, bi)
350 unpin_user_page(bv.bv_page);
351 free_bvec:
352 if (bvec != stack_vec)
353 kfree(bvec);
354 return ret;
355 }
356 EXPORT_SYMBOL_GPL(bio_integrity_map_user);
357
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2023-10-31 2:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-27 18:19 [PATCHv2 0/4] block integrity: directly map user space addresses Keith Busch
2023-10-27 18:19 ` [PATCHv2 1/4] block: bio-integrity: directly map user buffers Keith Busch
[not found] ` <CGME20231030144050eucas1p12ede963088687846d9b02a27d7da525e@eucas1p1.samsung.com>
2023-10-30 14:40 ` Pankaj Raghav
2023-10-30 14:54 ` Keith Busch
2023-10-30 15:27 ` kernel test robot
2023-10-30 21:02 ` Kanchan Joshi
2023-10-30 21:25 ` Keith Busch
2023-10-31 0:13 ` kernel test robot
2023-10-31 2:46 ` kernel test robot [this message]
2023-11-06 5:48 ` Kanchan Joshi
2023-11-06 15:02 ` Keith Busch
2023-11-07 10:25 ` Kanchan Joshi
2023-11-07 15:08 ` Keith Busch
2023-11-08 12:15 ` Kanchan Joshi
2023-11-08 17:19 ` Keith Busch
2023-10-27 18:19 ` [PATCHv2 2/4] nvme: use bio_integrity_map_user Keith Busch
2023-10-27 18:19 ` [PATCHv2 3/4] iouring: remove IORING_URING_CMD_POLLED Keith Busch
2023-10-27 18:19 ` [PATCHv2 4/4] io_uring: remove uring_cmd cookie Keith Busch
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 \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox