CC: kbuild-...@lists.01.org
TO: Pavel Begunkov <asml.sile...@gmail.com>
CC: Jens Axboe <ax...@kernel.dk>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git 
for-5.13/io_uring
head:   a2a7cc32a5e8cd983912f25a242820107e5613dc
commit: 41edf1a5ec967bf4bddedb83c48e02dfea8315b4 [143/149] io_uring: keep table 
of pointers to ubufs
:::::: branch date: 6 hours ago
:::::: commit date: 6 hours ago
config: x86_64-randconfig-m031-20210425 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
fs/io_uring.c:8234 io_sqe_buffer_register() warn: this array is probably 
non-NULL. 'imu->bvec'

Old smatch warnings:
fs/io_uring.c:4639 io_recv() error: uninitialized symbol 'flags'.
fs/io_uring.c:4934 io_poll_double_wake() warn: variable dereferenced before 
check 'poll' (see line 4929)

vim +8234 fs/io_uring.c

edafccee56ff31 Jens Axboe        2019-01-09  8204  
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8205  static int 
io_sqe_buffer_register(struct io_ring_ctx *ctx, struct iovec *iov,
41edf1a5ec967b Pavel Begunkov    2021-04-25  8206                               
  struct io_mapped_ubuf **pimu,
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8207                               
  struct page **last_hpage)
edafccee56ff31 Jens Axboe        2019-01-09  8208  {
41edf1a5ec967b Pavel Begunkov    2021-04-25  8209       struct io_mapped_ubuf 
*imu = NULL;
edafccee56ff31 Jens Axboe        2019-01-09  8210       struct vm_area_struct 
**vmas = NULL;
edafccee56ff31 Jens Axboe        2019-01-09  8211       struct page **pages = 
NULL;
edafccee56ff31 Jens Axboe        2019-01-09  8212       unsigned long off, 
start, end, ubuf;
edafccee56ff31 Jens Axboe        2019-01-09  8213       size_t size;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8214       int ret, pret, 
nr_pages, i;
edafccee56ff31 Jens Axboe        2019-01-09  8215  
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8216       ubuf = (unsigned long) 
iov->iov_base;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8217       end = (ubuf + 
iov->iov_len + PAGE_SIZE - 1) >> PAGE_SHIFT;
edafccee56ff31 Jens Axboe        2019-01-09  8218       start = ubuf >> 
PAGE_SHIFT;
edafccee56ff31 Jens Axboe        2019-01-09  8219       nr_pages = end - start;
edafccee56ff31 Jens Axboe        2019-01-09  8220  
41edf1a5ec967b Pavel Begunkov    2021-04-25  8221       *pimu = NULL;
edafccee56ff31 Jens Axboe        2019-01-09  8222       ret = -ENOMEM;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8223  
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8224       pages = 
kvmalloc_array(nr_pages, sizeof(struct page *), GFP_KERNEL);
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8225       if (!pages)
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8226               goto done;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8227  
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8228       vmas = 
kvmalloc_array(nr_pages, sizeof(struct vm_area_struct *),
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8229                             
GFP_KERNEL);
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8230       if (!vmas)
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8231               goto done;
edafccee56ff31 Jens Axboe        2019-01-09  8232  
41edf1a5ec967b Pavel Begunkov    2021-04-25  8233       imu = 
kvmalloc(struct_size(imu, bvec, nr_pages), GFP_KERNEL);
de2939388be564 Jens Axboe        2020-09-17 @8234       if (!imu->bvec)
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8235               goto done;
edafccee56ff31 Jens Axboe        2019-01-09  8236  
edafccee56ff31 Jens Axboe        2019-01-09  8237       ret = 0;
d8ed45c5dcd455 Michel Lespinasse 2020-06-08  8238       
mmap_read_lock(current->mm);
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8239       pret = 
pin_user_pages(ubuf, nr_pages, FOLL_WRITE | FOLL_LONGTERM,
edafccee56ff31 Jens Axboe        2019-01-09  8240                             
pages, vmas);
edafccee56ff31 Jens Axboe        2019-01-09  8241       if (pret == nr_pages) {
edafccee56ff31 Jens Axboe        2019-01-09  8242               /* don't 
support file backed memory */
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8243               for (i = 0; i < 
nr_pages; i++) {
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8244                       struct 
vm_area_struct *vma = vmas[i];
edafccee56ff31 Jens Axboe        2019-01-09  8245  
edafccee56ff31 Jens Axboe        2019-01-09  8246                       if 
(vma->vm_file &&
edafccee56ff31 Jens Axboe        2019-01-09  8247                           
!is_file_hugepages(vma->vm_file)) {
edafccee56ff31 Jens Axboe        2019-01-09  8248                               
ret = -EOPNOTSUPP;
edafccee56ff31 Jens Axboe        2019-01-09  8249                               
break;
edafccee56ff31 Jens Axboe        2019-01-09  8250                       }
edafccee56ff31 Jens Axboe        2019-01-09  8251               }
edafccee56ff31 Jens Axboe        2019-01-09  8252       } else {
edafccee56ff31 Jens Axboe        2019-01-09  8253               ret = pret < 0 
? pret : -EFAULT;
edafccee56ff31 Jens Axboe        2019-01-09  8254       }
d8ed45c5dcd455 Michel Lespinasse 2020-06-08  8255       
mmap_read_unlock(current->mm);
edafccee56ff31 Jens Axboe        2019-01-09  8256       if (ret) {
edafccee56ff31 Jens Axboe        2019-01-09  8257               /*
edafccee56ff31 Jens Axboe        2019-01-09  8258                * if we did 
partial map, or found file backed vmas,
edafccee56ff31 Jens Axboe        2019-01-09  8259                * release any 
pages we did get
edafccee56ff31 Jens Axboe        2019-01-09  8260                */
27c4d3a3252fa6 John Hubbard      2019-08-04  8261               if (pret > 0)
f1f6a7dd9b53aa John Hubbard      2020-01-30  8262                       
unpin_user_pages(pages, pret);
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8263               goto done;
de2939388be564 Jens Axboe        2020-09-17  8264       }
de2939388be564 Jens Axboe        2020-09-17  8265  
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8266       ret = 
io_buffer_account_pin(ctx, pages, pret, imu, last_hpage);
de2939388be564 Jens Axboe        2020-09-17  8267       if (ret) {
de2939388be564 Jens Axboe        2020-09-17  8268               
unpin_user_pages(pages, pret);
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8269               goto done;
edafccee56ff31 Jens Axboe        2019-01-09  8270       }
edafccee56ff31 Jens Axboe        2019-01-09  8271  
edafccee56ff31 Jens Axboe        2019-01-09  8272       off = ubuf & ~PAGE_MASK;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8273       size = iov->iov_len;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8274       for (i = 0; i < 
nr_pages; i++) {
edafccee56ff31 Jens Axboe        2019-01-09  8275               size_t vec_len;
edafccee56ff31 Jens Axboe        2019-01-09  8276  
edafccee56ff31 Jens Axboe        2019-01-09  8277               vec_len = 
min_t(size_t, size, PAGE_SIZE - off);
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8278               
imu->bvec[i].bv_page = pages[i];
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8279               
imu->bvec[i].bv_len = vec_len;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8280               
imu->bvec[i].bv_offset = off;
edafccee56ff31 Jens Axboe        2019-01-09  8281               off = 0;
edafccee56ff31 Jens Axboe        2019-01-09  8282               size -= vec_len;
edafccee56ff31 Jens Axboe        2019-01-09  8283       }
edafccee56ff31 Jens Axboe        2019-01-09  8284       /* store original 
address for later verification */
edafccee56ff31 Jens Axboe        2019-01-09  8285       imu->ubuf = ubuf;
4751f53d74a688 Pavel Begunkov    2021-04-01  8286       imu->ubuf_end = ubuf + 
iov->iov_len;
edafccee56ff31 Jens Axboe        2019-01-09  8287       imu->nr_bvecs = 
nr_pages;
41edf1a5ec967b Pavel Begunkov    2021-04-25  8288       *pimu = imu;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8289       ret = 0;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8290  done:
41edf1a5ec967b Pavel Begunkov    2021-04-25  8291       if (ret)
41edf1a5ec967b Pavel Begunkov    2021-04-25  8292               kvfree(imu);
d4ef647510b120 Mark Rutland      2019-05-01  8293       kvfree(pages);
d4ef647510b120 Mark Rutland      2019-05-01  8294       kvfree(vmas);
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8295       return ret;
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8296  }
0a96bbe49994a4 Bijan Mottahedeh  2021-01-06  8297  

:::::: The code at line 8234 was first introduced by commit
:::::: de2939388be564836b06f0f06b3787bdedaed822 io_uring: improve registered 
buffer accounting for huge pages

:::::: TO: Jens Axboe <ax...@kernel.dk>
:::::: CC: Jens Axboe <ax...@kernel.dk>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to