[<prev] [next>] [day] [month] [year] [list]
Message-ID: <201805301445.aZCurf7o%fengguang.wu@intel.com>
Date: Wed, 30 May 2018 14:29:47 +0800
From: kbuild test robot <lkp@...el.com>
To: Eric Biggers <ebiggers@...gle.com>
Cc: kbuild-all@...org, linux-ext4@...r.kernel.org
Subject: [ext4:fsverity 10/16] fs/verity/setup.c:612:13: error: implicit
declaration of function 'vmap'; did you mean 'kmap'?
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git fsverity
head: 9eca2992eccf2f675fb25ac617cc15702552c582
commit: b7569143a772208e172c59af9f0dfc7b98acadc1 [10/16] [WIP] fs-verity: prototype implementation
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout b7569143a772208e172c59af9f0dfc7b98acadc1
# save the attached .config to linux build tree
make.cross ARCH=sh
All errors (new ones prefixed by >>):
fs/verity/setup.c: In function 'map_fsverity_footer':
>> fs/verity/setup.c:612:13: error: implicit declaration of function 'vmap'; did you mean 'kmap'? [-Werror=implicit-function-declaration]
ftr_virt = vmap(ftr_pages, *nr_ftr_pages, VM_MAP, PAGE_KERNEL_RO);
^~~~
kmap
>> fs/verity/setup.c:612:44: error: 'VM_MAP' undeclared (first use in this function); did you mean 'VM_MPX'?
ftr_virt = vmap(ftr_pages, *nr_ftr_pages, VM_MAP, PAGE_KERNEL_RO);
^~~~~~
VM_MPX
fs/verity/setup.c:612:44: note: each undeclared identifier is reported only once for each function it appears in
fs/verity/setup.c: In function 'unmap_fsverity_footer':
>> fs/verity/setup.c:637:3: error: implicit declaration of function 'vunmap'; did you mean 'kunmap'? [-Werror=implicit-function-declaration]
vunmap((void *)((unsigned long)ftr & PAGE_MASK));
^~~~~~
kunmap
cc1: some warnings being treated as errors
vim +612 fs/verity/setup.c
505
506 /**
507 * map_fsverity_footer - map an inode's fs-verity footer into memory
508 *
509 * If the footer fits in one page, we use kmap; otherwise we use vmap.
510 * unmap_fsverity_footer() must be called to unmap it.
511 *
512 * It's assumed that the file contents cannot be modified concurrently.
513 * (This is guaranteed by either deny_write_access() or by the verity bit.)
514 *
515 * Return: the virtual address of the start of the footer, in virtually
516 * contiguous memory. Also fills in ftr_pages and returns in *ftr_len the
517 * length of the footer including all extensions, and in *ftr_start the offset
518 * of the footer from the start of the file, in bytes.
519 */
520 static const struct fsverity_footer *
521 map_fsverity_footer(struct inode *inode, loff_t full_isize,
522 struct page *ftr_pages[MAX_FOOTER_PAGES],
523 int *nr_ftr_pages, int *ftr_len, loff_t *ftr_start)
524 {
525 const int last_validsize = ((full_isize - 1) & ~PAGE_MASK) + 1;
526 const pgoff_t last_pgoff = (full_isize - 1) >> PAGE_SHIFT;
527 struct page *last_page;
528 const void *last_virt;
529 pgoff_t first_pgoff;
530 u32 ftr_reverse_offset;
531 pgoff_t pgoff;
532 const void *ftr_virt;
533 int i;
534 int err;
535
536 *nr_ftr_pages = 0;
537 *ftr_len = 0;
538 *ftr_start = 0;
539
540 if (full_isize <= 0) {
541 pr_warn("File is empty!\n");
542 return ERR_PTR(-EINVAL);
543 }
544
545 /*
546 * The footer size is given by the ftr_reverse_offset field in the last
547 * 4 bytes of the file.
548 */
549 if (last_validsize < sizeof(__le32)) {
550 pr_warn("Misaligned ftr_reverse_offset\n");
551 return ERR_PTR(-EINVAL);
552 }
553 last_page = inode->i_sb->s_vop->read_metadata_page(inode, last_pgoff);
554 if (IS_ERR(last_page)) {
555 pr_warn("Error reading footer page: %ld\n", PTR_ERR(last_page));
556 return ERR_CAST(last_page);
557 }
558 last_virt = kmap(last_page);
559 ftr_reverse_offset = get_unaligned_le32(last_virt + last_validsize -
560 sizeof(__le32));
561 if (ftr_reverse_offset <
562 sizeof(struct fsverity_footer) + sizeof(__le32) ||
563 ftr_reverse_offset > full_isize) {
564 pr_warn("Unexpected ftr_reverse_offset: %u\n",
565 ftr_reverse_offset);
566 err = -EINVAL;
567 goto err_out;
568 }
569 *ftr_start = full_isize - ftr_reverse_offset;
570 if (*ftr_start & 7) {
571 pr_warn("fs-verity footer is misaligned (ftr_start=%lld)\n",
572 *ftr_start);
573 err = -EINVAL;
574 goto err_out;
575 }
576
577 first_pgoff = *ftr_start >> PAGE_SHIFT;
578 if (last_pgoff - first_pgoff >= MAX_FOOTER_PAGES) {
579 pr_warn("fs-verity footer is too long (%lu pages)\n",
580 last_pgoff - first_pgoff + 1);
581 err = -EINVAL;
582 goto err_out;
583 }
584
585 *ftr_len = ftr_reverse_offset - sizeof(__le32);
586
587 if (first_pgoff == last_pgoff) {
588 /* Single-page footer; just use the already-kmapped last page */
589 ftr_pages[0] = last_page;
590 *nr_ftr_pages = 1;
591 return last_virt + (*ftr_start & ~PAGE_MASK);
592 }
593
594 /* Multi-page footer; map the additional pages into memory */
595
596 for (pgoff = first_pgoff; pgoff < last_pgoff; pgoff++) {
597 struct page *page;
598
599 page = inode->i_sb->s_vop->read_metadata_page(inode, pgoff);
600 if (IS_ERR(page)) {
601 err = PTR_ERR(page);
602 pr_warn("Error reading footer page: %d\n", err);
603 goto err_out;
604 }
605 ftr_pages[(*nr_ftr_pages)++] = page;
606 }
607
608 ftr_pages[(*nr_ftr_pages)++] = last_page;
609 kunmap(last_page);
610 last_page = NULL;
611
> 612 ftr_virt = vmap(ftr_pages, *nr_ftr_pages, VM_MAP, PAGE_KERNEL_RO);
613 if (!ftr_virt) {
614 err = -ENOMEM;
615 goto err_out;
616 }
617
618 return ftr_virt + (*ftr_start & ~PAGE_MASK);
619
620 err_out:
621 for (i = 0; i < *nr_ftr_pages; i++)
622 put_page(ftr_pages[i]);
623 if (last_page) {
624 kunmap(last_page);
625 put_page(last_page);
626 }
627 return ERR_PTR(err);
628 }
629
630 static void unmap_fsverity_footer(const struct fsverity_footer *ftr,
631 struct page *ftr_pages[MAX_FOOTER_PAGES],
632 int nr_ftr_pages)
633 {
634 int i;
635
636 if (is_vmalloc_addr(ftr)) {
> 637 vunmap((void *)((unsigned long)ftr & PAGE_MASK));
638 } else {
639 WARN_ON(nr_ftr_pages != 1);
640 kunmap(ftr_pages[0]);
641 }
642 for (i = 0; i < nr_ftr_pages; i++)
643 put_page(ftr_pages[i]);
644 }
645
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (47758 bytes)
Powered by blists - more mailing lists