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-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 <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

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/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to