| From d07de8bd1709a80a282963ad7b2535148678a9e4 Mon Sep 17 00:00:00 2001 |
| From: Yishai Hadas <yishaih@mellanox.com> |
| Date: Sun, 22 Dec 2019 14:46:48 +0200 |
| Subject: IB/core: Fix ODP get user pages flow |
| |
| From: Yishai Hadas <yishaih@mellanox.com> |
| |
| commit d07de8bd1709a80a282963ad7b2535148678a9e4 upstream. |
| |
| The nr_pages argument of get_user_pages_remote() should always be in terms |
| of the system page size, not the MR page size. Use PAGE_SIZE instead of |
| umem_odp->page_shift. |
| |
| Fixes: 403cd12e2cf7 ("IB/umem: Add contiguous ODP support") |
| Link: https://lore.kernel.org/r/20191222124649.52300-3-leon@kernel.org |
| Signed-off-by: Yishai Hadas <yishaih@mellanox.com> |
| Reviewed-by: Artemy Kovalyov <artemyko@mellanox.com> |
| Reviewed-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Leon Romanovsky <leonro@mellanox.com> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/infiniband/core/umem_odp.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/infiniband/core/umem_odp.c |
| +++ b/drivers/infiniband/core/umem_odp.c |
| @@ -689,7 +689,7 @@ int ib_umem_odp_map_dma_pages(struct ib_ |
| |
| while (bcnt > 0) { |
| const size_t gup_num_pages = min_t(size_t, |
| - (bcnt + BIT(page_shift) - 1) >> page_shift, |
| + ALIGN(bcnt, PAGE_SIZE) / PAGE_SIZE, |
| PAGE_SIZE / sizeof(struct page *)); |
| |
| down_read(&owning_mm->mmap_sem); |