CC: [email protected] CC: Omar Sandoval <[email protected]> CC: [email protected] TO: Omar Sandoval <[email protected]>
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 <[email protected]> Reported-by: Dan Carpenter <[email protected]> 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/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
