linux_dsm_epyc7002/drivers/infiniband/hw
John Hubbard ea99697458 RDMA: Convert put_page() to put_user_page*()
For infiniband code that retains pages via get_user_pages*(), release
those pages via the new put_user_page(), or put_user_pages*(), instead of
put_page()

This is a tiny part of the second step of fixing the problem described in
[1]. The steps are:

1) Provide put_user_page*() routines, intended to be used for releasing
   pages that were pinned via get_user_pages*().

2) Convert all of the call sites for get_user_pages*(), to invoke
   put_user_page*(), instead of put_page(). This involves dozens of call
   sites, and will take some time.

3) After (2) is complete, use get_user_pages*() and put_user_page*() to
   implement tracking of these pages. This tracking will be separate from
   the existing struct page refcounting.

4) Use the tracking and identification of these pages, to implement
   special handling (especially in writeback paths) when the pages are
   backed by a filesystem. Again, [1] provides details as to why that is
   desirable.

[1] https://lwn.net/Articles/753027/ : "The Trouble with get_user_pages()"

Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Jérôme Glisse <jglisse@redhat.com>
Acked-by: Jason Gunthorpe <jgg@mellanox.com>
Tested-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2019-05-27 20:11:11 -03:00
..
bnxt_re RDMA/bnxt_re: Use core helpers to get aligned DMA address 2019-05-06 13:08:11 -03:00
cxgb3 RDMA/cxgb3: Delete and properly mark unimplemented resize CQ function 2019-05-27 14:24:04 -03:00
cxgb4 iw_cxgb4: Fix qpid leak 2019-05-27 14:58:24 -03:00
efa RDMA/efa: Remove check that prevents destroy of resources in error flows 2019-05-21 21:14:28 -03:00
hfi1 RDMA: Convert put_page() to put_user_page*() 2019-05-27 20:11:11 -03:00
hns RDMA/hns: Replace magic numbers with #defines 2019-05-27 17:31:00 -03:00
i40iw RDMA/i40iw: Remove useless NULL checks 2019-05-21 15:50:53 -03:00
mlx4 IB/mlx4: Delete unused func arg 2019-05-21 15:27:25 -03:00
mlx5 RDMA/umem: Move page_shift from ib_umem to ib_odp_umem 2019-05-21 15:23:24 -03:00
mthca RDMA: Convert put_page() to put_user_page*() 2019-05-27 20:11:11 -03:00
nes RDMA/nes: Remove second wait queue initialization call 2019-05-21 15:50:53 -03:00
ocrdma RDMA: Directly cast the sockaddr union to sockaddr 2019-05-13 22:16:38 -03:00
qedr RDMA/qedr: Fix incorrect device rate. 2019-05-21 15:04:53 -03:00
qib RDMA: Convert put_page() to put_user_page*() 2019-05-27 20:11:11 -03:00
usnic RDMA: Convert put_page() to put_user_page*() 2019-05-27 20:11:11 -03:00
vmw_pvrdma Merge branch 'rdma_mmap' into rdma.git for-next 2019-04-24 16:20:34 -03:00
Makefile RDMA/efa: Add driver to Kconfig/Makefile 2019-05-07 12:47:47 -03:00