All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.