* [osandov:btrfs-send-encoded 8/14] fs/btrfs/inode.c:10831 btrfs_encoded_read_regular() warn: potentially one past the end of array 'pages[i]'
@ 2021-10-25 18:32 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-10-25 18:32 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 6157 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
head: b460af84b8ddd4fd78e02fec6272b70326b87861
commit: d38f9ac9a40338488424fe7e8058dfb2542ca2ef [8/14] btrfs: add BTRFS_IOC_ENCODED_READ
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: openrisc-randconfig-m031-20211025 (attached as .config)
compiler: or1k-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:10831 btrfs_encoded_read_regular() warn: potentially one past the end of array 'pages[i]'
fs/btrfs/inode.c:10831 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 +10831 fs/btrfs/inode.c
d38f9ac9a40338 Omar Sandoval 2019-10-09 10781
d38f9ac9a40338 Omar Sandoval 2019-10-09 10782 static ssize_t btrfs_encoded_read_regular(struct kiocb *iocb,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10783 struct iov_iter *iter,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10784 u64 start, u64 lockend,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10785 struct extent_state **cached_state,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10786 u64 offset, u64 disk_io_size,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10787 size_t count, bool compressed,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10788 bool *unlocked)
d38f9ac9a40338 Omar Sandoval 2019-10-09 10789 {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10790 struct inode *inode = file_inode(iocb->ki_filp);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10791 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10792 struct page **pages;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10793 unsigned long nr_pages, i;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10794 u64 cur;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10795 size_t page_offset;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10796 ssize_t ret;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10797
d38f9ac9a40338 Omar Sandoval 2019-10-09 10798 nr_pages = DIV_ROUND_UP(disk_io_size, PAGE_SIZE);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10799 pages = kcalloc(nr_pages, sizeof(struct page *), GFP_NOFS);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10800 if (!pages)
d38f9ac9a40338 Omar Sandoval 2019-10-09 10801 return -ENOMEM;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10802 for (i = 0; i < nr_pages; i++) {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10803 pages[i] = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10804 if (!pages[i]) {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10805 ret = -ENOMEM;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10806 goto out;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10807 }
d38f9ac9a40338 Omar Sandoval 2019-10-09 10808 }
d38f9ac9a40338 Omar Sandoval 2019-10-09 10809
d38f9ac9a40338 Omar Sandoval 2019-10-09 10810 ret = btrfs_encoded_read_regular_fill_pages(inode, offset, disk_io_size,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10811 pages);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10812 if (ret)
d38f9ac9a40338 Omar Sandoval 2019-10-09 10813 goto out;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10814
d38f9ac9a40338 Omar Sandoval 2019-10-09 10815 unlock_extent_cached(io_tree, start, lockend, cached_state);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10816 inode_unlock_shared(inode);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10817 *unlocked = true;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10818
d38f9ac9a40338 Omar Sandoval 2019-10-09 10819 if (compressed) {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10820 i = 0;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10821 page_offset = 0;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10822 } else {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10823 i = (iocb->ki_pos - start) >> PAGE_SHIFT;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10824 page_offset = (iocb->ki_pos - start) & (PAGE_SIZE - 1);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10825 }
d38f9ac9a40338 Omar Sandoval 2019-10-09 10826 cur = 0;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10827 while (cur < count) {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10828 size_t bytes = min_t(size_t, count - cur,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10829 PAGE_SIZE - page_offset);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10830
d38f9ac9a40338 Omar Sandoval 2019-10-09 @10831 if (copy_page_to_iter(pages[i], page_offset, bytes,
d38f9ac9a40338 Omar Sandoval 2019-10-09 10832 iter) != bytes) {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10833 ret = -EFAULT;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10834 goto out;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10835 }
d38f9ac9a40338 Omar Sandoval 2019-10-09 10836 i++;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10837 cur += bytes;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10838 page_offset = 0;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10839 }
d38f9ac9a40338 Omar Sandoval 2019-10-09 10840 ret = count;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10841 out:
d38f9ac9a40338 Omar Sandoval 2019-10-09 10842 for (i = 0; i < nr_pages; i++) {
d38f9ac9a40338 Omar Sandoval 2019-10-09 10843 if (pages[i])
d38f9ac9a40338 Omar Sandoval 2019-10-09 10844 __free_page(pages[i]);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10845 }
d38f9ac9a40338 Omar Sandoval 2019-10-09 10846 kfree(pages);
d38f9ac9a40338 Omar Sandoval 2019-10-09 10847 return ret;
d38f9ac9a40338 Omar Sandoval 2019-10-09 10848 }
d38f9ac9a40338 Omar Sandoval 2019-10-09 10849
---
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: 30671 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-10-25 18:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-25 18:32 [osandov:btrfs-send-encoded 8/14] fs/btrfs/inode.c:10831 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.