* [mellanox:queue-next 1371/1385] drivers/infiniband/core/umem.c:206 __ib_umem_get() warn: impossible condition '(npages > (~0)) => (0-u32max > u32max)'
@ 2021-02-11 8:10 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-02-11 8:10 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 18418 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Jason Gunthorpe <jgg@nvidia.com>
CC: Leon Romanovsky <leonro@nvidia.com>
CC: Yishai Hadas <yishaih@mellanox.com>
CC: Feras Daoud <ferasda@mellanox.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux.git queue-next
head: 4c15ba82aff76a52f734495ea85b2c15693c6340
commit: d7f5a92ad24728b1bdf38a09f9dcfe6d07888e9e [1371/1385] RDMA/core: Introduce peer memory interface
:::::: branch date: 23 hours ago
:::::: commit date: 23 hours ago
config: i386-randconfig-m031-20210209 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.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>
smatch warnings:
drivers/infiniband/core/umem.c:206 __ib_umem_get() warn: impossible condition '(npages > (~0)) => (0-u32max > u32max)'
vim +206 drivers/infiniband/core/umem.c
4a35339958f16d drivers/infiniband/core/umem.c Shiraz Saleem 2019-05-06 144
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 145 /**
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 146 * __ib_umem_get - Pin and DMA map userspace memory.
8ada2c1c0c1d75 drivers/infiniband/core/umem.c Shachar Raindel 2014-12-11 147 *
c320e527e15483 drivers/infiniband/core/umem.c Moni Shoua 2020-01-15 148 * @device: IB device to connect UMEM
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 149 * @addr: userspace virtual address to start at
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 150 * @size: length of region to pin
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 151 * @access: IB_ACCESS_xxx flags for memory being pinned
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 152 * @peer_mem_flags: IB_PEER_MEM_xxx flags for memory being used
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 153 */
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 154 static struct ib_umem *__ib_umem_get(struct ib_device *device,
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 155 unsigned long addr, size_t size, int access,
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 156 unsigned long peer_mem_flags)
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 157 {
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 158 struct ib_umem *umem;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 159 struct page **page_list;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 160 unsigned long lock_limit;
c6ce580716372d drivers/infiniband/core/umem.c Doug Ledford 2018-09-21 161 unsigned long new_pinned;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 162 unsigned long cur_base;
f03d9fadfe13a7 drivers/infiniband/core/umem.c Michael Guralnik 2020-02-12 163 unsigned long dma_attr = 0;
d4b4dd1b9706e4 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 164 struct mm_struct *mm;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 165 unsigned long npages;
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 166 int ret;
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 167 struct scatterlist *sg = NULL;
768ae309a96103 drivers/infiniband/core/umem.c Lorenzo Stoakes 2016-10-13 168 unsigned int gup_flags = FOLL_WRITE;
cb9fbc5c37b69a drivers/infiniband/core/umem.c Arthur Kepner 2008-04-29 169
8494057ab5e40d drivers/infiniband/core/umem.c Shachar Raindel 2015-03-18 170 /*
8494057ab5e40d drivers/infiniband/core/umem.c Shachar Raindel 2015-03-18 171 * If the combination of the addr and size requested for this memory
8494057ab5e40d drivers/infiniband/core/umem.c Shachar Raindel 2015-03-18 172 * region causes an integer overflow, return error.
8494057ab5e40d drivers/infiniband/core/umem.c Shachar Raindel 2015-03-18 173 */
66578b0b2f6965 drivers/infiniband/core/umem.c Yann Droneaud 2015-04-13 174 if (((addr + size) < addr) ||
66578b0b2f6965 drivers/infiniband/core/umem.c Yann Droneaud 2015-04-13 175 PAGE_ALIGN(addr + size) < (addr + size))
8494057ab5e40d drivers/infiniband/core/umem.c Shachar Raindel 2015-03-18 176 return ERR_PTR(-EINVAL);
8494057ab5e40d drivers/infiniband/core/umem.c Shachar Raindel 2015-03-18 177
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 178 if (!can_do_mlock())
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 179 return ERR_PTR(-EPERM);
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 180
261dc53f8ee037 drivers/infiniband/core/umem.c Jason Gunthorpe 2019-08-19 181 if (access & IB_ACCESS_ON_DEMAND)
261dc53f8ee037 drivers/infiniband/core/umem.c Jason Gunthorpe 2019-08-19 182 return ERR_PTR(-EOPNOTSUPP);
261dc53f8ee037 drivers/infiniband/core/umem.c Jason Gunthorpe 2019-08-19 183
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 184 umem = kzalloc(sizeof(*umem), GFP_KERNEL);
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 185 if (!umem)
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 186 return ERR_PTR(-ENOMEM);
c320e527e15483 drivers/infiniband/core/umem.c Moni Shoua 2020-01-15 187 umem->ibdev = device;
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 188 umem->length = size;
406f9e5fa9a7a6 drivers/infiniband/core/umem.c Haggai Eran 2014-12-11 189 umem->address = addr;
a665aca89a4111 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-09-04 190 /*
a665aca89a4111 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-09-04 191 * Drivers should call ib_umem_find_best_pgsz() to set the iova
a665aca89a4111 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-09-04 192 * correctly.
a665aca89a4111 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-09-04 193 */
a665aca89a4111 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-09-04 194 umem->iova = addr;
08bb558ac11ab9 drivers/infiniband/core/umem.c Jack Morgenstein 2018-05-23 195 umem->writable = ib_access_writable(access);
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 196 umem->owning_mm = mm = current->mm;
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 197 mmgrab(mm);
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 198
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 199 page_list = (struct page **) __get_free_page(GFP_KERNEL);
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 200 if (!page_list) {
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 201 ret = -ENOMEM;
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 202 goto umem_kfree;
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 203 }
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 204
406f9e5fa9a7a6 drivers/infiniband/core/umem.c Haggai Eran 2014-12-11 205 npages = ib_umem_num_pages(umem);
3312d1c6bdee6a drivers/infiniband/core/umem.c Doug Ledford 2018-09-21 @206 if (npages == 0 || npages > UINT_MAX) {
3312d1c6bdee6a drivers/infiniband/core/umem.c Doug Ledford 2018-09-21 207 ret = -EINVAL;
3312d1c6bdee6a drivers/infiniband/core/umem.c Doug Ledford 2018-09-21 208 goto out;
3312d1c6bdee6a drivers/infiniband/core/umem.c Doug Ledford 2018-09-21 209 }
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 210
ccbe9f0b11b137 drivers/infiniband/core/umem.c Jiri Slaby 2010-02-11 211 lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 212
b95df5e3e45914 drivers/infiniband/core/umem.c Davidlohr Bueso 2019-02-06 213 new_pinned = atomic64_add_return(npages, &mm->pinned_vm);
70f8a3ca68d3e1 drivers/infiniband/core/umem.c Davidlohr Bueso 2019-02-06 214 if (new_pinned > lock_limit && !capable(CAP_IPC_LOCK)) {
b95df5e3e45914 drivers/infiniband/core/umem.c Davidlohr Bueso 2019-02-06 215 atomic64_sub(npages, &mm->pinned_vm);
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 216 ret = -ENOMEM;
c6ce580716372d drivers/infiniband/core/umem.c Doug Ledford 2018-09-21 217 goto out;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 218 }
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 219
f7c6a7b5d59980 drivers/infiniband/core/umem.c Roland Dreier 2007-03-04 220 cur_base = addr & PAGE_MASK;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 221
768ae309a96103 drivers/infiniband/core/umem.c Lorenzo Stoakes 2016-10-13 222 if (!umem->writable)
768ae309a96103 drivers/infiniband/core/umem.c Lorenzo Stoakes 2016-10-13 223 gup_flags |= FOLL_FORCE;
768ae309a96103 drivers/infiniband/core/umem.c Lorenzo Stoakes 2016-10-13 224
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 225 while (npages) {
928da37a229f34 drivers/infiniband/core/umem.c Eric Dumazet 2020-07-29 226 cond_resched();
dfa0a4fff11b32 drivers/infiniband/core/umem.c John Hubbard 2020-01-30 227 ret = pin_user_pages_fast(cur_base,
8079ffa0e18baa drivers/infiniband/core/umem.c Roland Dreier 2008-06-06 228 min_t(unsigned long, npages,
4789fcdd140952 drivers/infiniband/core/umem.c John Hubbard 2020-01-30 229 PAGE_SIZE /
4789fcdd140952 drivers/infiniband/core/umem.c John Hubbard 2020-01-30 230 sizeof(struct page *)),
4789fcdd140952 drivers/infiniband/core/umem.c John Hubbard 2020-01-30 231 gup_flags | FOLL_LONGTERM, page_list);
4789fcdd140952 drivers/infiniband/core/umem.c John Hubbard 2020-01-30 232 if (ret < 0)
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 233 goto umem_release;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 234
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 235 cur_base += ret * PAGE_SIZE;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 236 npages -= ret;
b116c702791a98 drivers/infiniband/core/umem.c Christoph Hellwig 2020-11-06 237 sg = __sg_alloc_table_from_pages(&umem->sg_head, page_list, ret,
b116c702791a98 drivers/infiniband/core/umem.c Christoph Hellwig 2020-11-06 238 0, ret << PAGE_SHIFT,
b116c702791a98 drivers/infiniband/core/umem.c Christoph Hellwig 2020-11-06 239 ib_dma_max_seg_size(device), sg, npages,
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 240 GFP_KERNEL);
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 241 umem->sg_nents = umem->sg_head.nents;
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 242 if (IS_ERR(sg)) {
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 243 unpin_user_pages_dirty_lock(page_list, ret, 0);
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 244 ret = PTR_ERR(sg);
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 245 goto umem_release;
0c16d9635e3a51 drivers/infiniband/core/umem.c Maor Gottlieb 2020-10-04 246 }
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 247 }
d10bcf947a3ea2 drivers/infiniband/core/umem.c Shiraz Saleem 2019-04-02 248
f03d9fadfe13a7 drivers/infiniband/core/umem.c Michael Guralnik 2020-02-12 249 if (access & IB_ACCESS_RELAXED_ORDERING)
f03d9fadfe13a7 drivers/infiniband/core/umem.c Michael Guralnik 2020-02-12 250 dma_attr |= DMA_ATTR_WEAK_ORDERING;
f03d9fadfe13a7 drivers/infiniband/core/umem.c Michael Guralnik 2020-02-12 251
f03d9fadfe13a7 drivers/infiniband/core/umem.c Michael Guralnik 2020-02-12 252 umem->nmap =
f03d9fadfe13a7 drivers/infiniband/core/umem.c Michael Guralnik 2020-02-12 253 ib_dma_map_sg_attrs(device, umem->sg_head.sgl, umem->sg_nents,
f03d9fadfe13a7 drivers/infiniband/core/umem.c Michael Guralnik 2020-02-12 254 DMA_BIDIRECTIONAL, dma_attr);
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 255
3a2e791c9456aa drivers/infiniband/core/umem.c Leon Romanovsky 2018-06-24 256 if (!umem->nmap) {
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 257 ret = -ENOMEM;
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 258 goto umem_release;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 259 }
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 260
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 261 ret = 0;
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 262 goto out;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 263
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 264 umem_release:
c320e527e15483 drivers/infiniband/core/umem.c Moni Shoua 2020-01-15 265 __ib_umem_release(device, umem, 0);
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 266
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 267 /*
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 268 * If the address belongs to peer memory client, then the first
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 269 * call to get_user_pages will fail. In this case, try to get
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 270 * these pages from the peers.
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 271 */
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 272 //FIXME: this placement is horrible
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 273 if (ret < 0 && peer_mem_flags & IB_PEER_MEM_ALLOW) {
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 274 struct ib_umem *new_umem;
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 275
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 276 new_umem = ib_peer_umem_get(umem, ret, peer_mem_flags);
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 277 if (IS_ERR(new_umem)) {
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 278 ret = PTR_ERR(new_umem);
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 279 goto vma;
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 280 }
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 281 umem = new_umem;
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 282 ret = 0;
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 283 goto out;
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 284 }
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 285 vma:
70f8a3ca68d3e1 drivers/infiniband/core/umem.c Davidlohr Bueso 2019-02-06 286 atomic64_sub(ib_umem_num_pages(umem), &mm->pinned_vm);
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 287 out:
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 288 free_page((unsigned long) page_list);
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 289 umem_kfree:
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 290 if (ret) {
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 291 mmdrop(umem->owning_mm);
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 292 kfree(umem);
41b4deeaa123e6 drivers/infiniband/core/umem.c Jason Gunthorpe 2018-09-16 293 }
1215cb7c88ec88 drivers/infiniband/core/umem.c Leon Romanovsky 2018-07-10 294 return ret ? ERR_PTR(ret) : umem;
eb8ffbfed50e79 drivers/infiniband/core/uverbs_mem.c Roland Dreier 2005-07-07 295 }
d7f5a92ad24728 drivers/infiniband/core/umem.c Jason Gunthorpe 2020-11-26 296
:::::: The code at line 206 was first introduced by commit
:::::: 3312d1c6bdee6aa912c099c0ac0662d197c52842 RDMA/umem: Minor optimizations
:::::: TO: Doug Ledford <dledford@redhat.com>
:::::: CC: Jason Gunthorpe <jgg@mellanox.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 42295 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-02-11 8:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-11 8:10 [mellanox:queue-next 1371/1385] drivers/infiniband/core/umem.c:206 __ib_umem_get() warn: impossible condition '(npages > (~0)) => (0-u32max > u32max)' 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.