* [osandov:btrfs-send-encoded-v10 8/14] fs/btrfs/inode.c:10827 btrfs_encoded_read_regular() warn: potentially one past the end of array 'pages[i]'
@ 2021-08-19 16:34 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-08-19 16:34 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 6161 bytes --]
CC: kbuild-all(a)lists.01.org
CC: Omar Sandoval <osandov@osandov.com>
CC: linux-kernel(a)vger.kernel.org
TO: Omar Sandoval <osandov@fb.com>
tree: https://github.com/osandov/linux.git btrfs-send-encoded-v10
head: a87f8dd5b9e777c136ab986baa9b751f9c1909a6
commit: 6716dfd581687f8662d3c828ca2f9911ba58c721 [8/14] btrfs: add BTRFS_IOC_ENCODED_READ
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: nds32-randconfig-m031-20210818 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 11.2.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
fs/btrfs/inode.c:10827 btrfs_encoded_read_regular() warn: potentially one past the end of array 'pages[i]'
fs/btrfs/inode.c:10827 btrfs_encoded_read_regular() warn: potentially one past the end of array 'pages[i]'
Old smatch warnings:
fs/btrfs/inode.c:287 insert_inline_extent() error: we previously assumed 'compressed_pages' could be null (see line 256)
vim +10827 fs/btrfs/inode.c
6716dfd581687f Omar Sandoval 2019-10-09 10777
6716dfd581687f Omar Sandoval 2019-10-09 10778 static ssize_t btrfs_encoded_read_regular(struct kiocb *iocb,
6716dfd581687f Omar Sandoval 2019-10-09 10779 struct iov_iter *iter,
6716dfd581687f Omar Sandoval 2019-10-09 10780 u64 start, u64 lockend,
6716dfd581687f Omar Sandoval 2019-10-09 10781 struct extent_state **cached_state,
6716dfd581687f Omar Sandoval 2019-10-09 10782 u64 offset, u64 disk_io_size,
6716dfd581687f Omar Sandoval 2019-10-09 10783 size_t count, bool compressed,
6716dfd581687f Omar Sandoval 2019-10-09 10784 bool *unlocked)
6716dfd581687f Omar Sandoval 2019-10-09 10785 {
6716dfd581687f Omar Sandoval 2019-10-09 10786 struct inode *inode = file_inode(iocb->ki_filp);
6716dfd581687f Omar Sandoval 2019-10-09 10787 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
6716dfd581687f Omar Sandoval 2019-10-09 10788 struct page **pages;
6716dfd581687f Omar Sandoval 2019-10-09 10789 unsigned long nr_pages, i;
6716dfd581687f Omar Sandoval 2019-10-09 10790 u64 cur;
6716dfd581687f Omar Sandoval 2019-10-09 10791 size_t page_offset;
6716dfd581687f Omar Sandoval 2019-10-09 10792 ssize_t ret;
6716dfd581687f Omar Sandoval 2019-10-09 10793
6716dfd581687f Omar Sandoval 2019-10-09 10794 nr_pages = DIV_ROUND_UP(disk_io_size, PAGE_SIZE);
6716dfd581687f Omar Sandoval 2019-10-09 10795 pages = kcalloc(nr_pages, sizeof(struct page *), GFP_NOFS);
6716dfd581687f Omar Sandoval 2019-10-09 10796 if (!pages)
6716dfd581687f Omar Sandoval 2019-10-09 10797 return -ENOMEM;
6716dfd581687f Omar Sandoval 2019-10-09 10798 for (i = 0; i < nr_pages; i++) {
6716dfd581687f Omar Sandoval 2019-10-09 10799 pages[i] = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
6716dfd581687f Omar Sandoval 2019-10-09 10800 if (!pages[i]) {
6716dfd581687f Omar Sandoval 2019-10-09 10801 ret = -ENOMEM;
6716dfd581687f Omar Sandoval 2019-10-09 10802 goto out;
6716dfd581687f Omar Sandoval 2019-10-09 10803 }
6716dfd581687f Omar Sandoval 2019-10-09 10804 }
6716dfd581687f Omar Sandoval 2019-10-09 10805
6716dfd581687f Omar Sandoval 2019-10-09 10806 ret = btrfs_encoded_read_regular_fill_pages(inode, offset, disk_io_size,
6716dfd581687f Omar Sandoval 2019-10-09 10807 pages);
6716dfd581687f Omar Sandoval 2019-10-09 10808 if (ret)
6716dfd581687f Omar Sandoval 2019-10-09 10809 goto out;
6716dfd581687f Omar Sandoval 2019-10-09 10810
6716dfd581687f Omar Sandoval 2019-10-09 10811 unlock_extent_cached(io_tree, start, lockend, cached_state);
6716dfd581687f Omar Sandoval 2019-10-09 10812 inode_unlock_shared(inode);
6716dfd581687f Omar Sandoval 2019-10-09 10813 *unlocked = true;
6716dfd581687f Omar Sandoval 2019-10-09 10814
6716dfd581687f Omar Sandoval 2019-10-09 10815 if (compressed) {
6716dfd581687f Omar Sandoval 2019-10-09 10816 i = 0;
6716dfd581687f Omar Sandoval 2019-10-09 10817 page_offset = 0;
6716dfd581687f Omar Sandoval 2019-10-09 10818 } else {
6716dfd581687f Omar Sandoval 2019-10-09 10819 i = (iocb->ki_pos - start) >> PAGE_SHIFT;
6716dfd581687f Omar Sandoval 2019-10-09 10820 page_offset = (iocb->ki_pos - start) & (PAGE_SIZE - 1);
6716dfd581687f Omar Sandoval 2019-10-09 10821 }
6716dfd581687f Omar Sandoval 2019-10-09 10822 cur = 0;
6716dfd581687f Omar Sandoval 2019-10-09 10823 while (cur < count) {
6716dfd581687f Omar Sandoval 2019-10-09 10824 size_t bytes = min_t(size_t, count - cur,
6716dfd581687f Omar Sandoval 2019-10-09 10825 PAGE_SIZE - page_offset);
6716dfd581687f Omar Sandoval 2019-10-09 10826
6716dfd581687f Omar Sandoval 2019-10-09 @10827 if (copy_page_to_iter(pages[i], page_offset, bytes,
6716dfd581687f Omar Sandoval 2019-10-09 10828 iter) != bytes) {
6716dfd581687f Omar Sandoval 2019-10-09 10829 ret = -EFAULT;
6716dfd581687f Omar Sandoval 2019-10-09 10830 goto out;
6716dfd581687f Omar Sandoval 2019-10-09 10831 }
6716dfd581687f Omar Sandoval 2019-10-09 10832 i++;
6716dfd581687f Omar Sandoval 2019-10-09 10833 cur += bytes;
6716dfd581687f Omar Sandoval 2019-10-09 10834 page_offset = 0;
6716dfd581687f Omar Sandoval 2019-10-09 10835 }
6716dfd581687f Omar Sandoval 2019-10-09 10836 ret = count;
6716dfd581687f Omar Sandoval 2019-10-09 10837 out:
6716dfd581687f Omar Sandoval 2019-10-09 10838 for (i = 0; i < nr_pages; i++) {
6716dfd581687f Omar Sandoval 2019-10-09 10839 if (pages[i])
6716dfd581687f Omar Sandoval 2019-10-09 10840 __free_page(pages[i]);
6716dfd581687f Omar Sandoval 2019-10-09 10841 }
6716dfd581687f Omar Sandoval 2019-10-09 10842 kfree(pages);
6716dfd581687f Omar Sandoval 2019-10-09 10843 return ret;
6716dfd581687f Omar Sandoval 2019-10-09 10844 }
6716dfd581687f Omar Sandoval 2019-10-09 10845
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 38140 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-08-19 16:34 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19 16:34 [osandov:btrfs-send-encoded-v10 8/14] fs/btrfs/inode.c:10827 btrfs_encoded_read_regular() warn: potentially one past the end of array 'pages[i]' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.