linux_dsm_epyc7002/drivers/infiniband/hw/mlx4
Jack Morgenstein d8f9cc328c IB/mlx4: Mark user MR as writable if actual virtual memory is writable
To allow rereg_user_mr to modify the MR from read-only to writable without
using get_user_pages again, we needed to define the initial MR as writable.
However, this was originally done unconditionally, without taking into
account the writability of the underlying virtual memory.

As a result, any attempt to register a read-only MR over read-only
virtual memory failed.

To fix this, do not add the writable flag bit when the user virtual memory
is not writable (e.g. const memory).

However, when the underlying memory is NOT writable (and we therefore
do not define the initial MR as writable), the IB core adds a
"force writable" flag to its user-pages request. If this succeeds,
the reg_user_mr caller gets a writable copy of the original pages.

If the user-space caller then does a rereg_user_mr operation to enable
writability, this will succeed. This should not be allowed, since
the original virtual memory was not writable.

Cc: <stable@vger.kernel.org>
Fixes: 9376932d0c ("IB/mlx4_ib: Add support for user MR re-registration")
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
2018-05-28 11:41:39 -06:00
..
ah.c IB/providers: Avoid null netdev check for RoCE 2018-04-03 21:33:51 -06:00
alias_GUID.c IB/mlx4: Fix some spelling mistakes 2017-08-24 16:27:10 -04:00
cm.c IB/mlx4: Fix CM REQ retries in paravirt mode 2017-07-20 11:20:50 -04:00
cq.c IB/mlx: Set slid to zero in Ethernet completion struct 2018-02-28 12:10:32 -07:00
doorbell.c
Kconfig net: mellanox: add DEVLINK dependencies 2016-03-03 17:08:59 -05:00
mad.c Add OPA extended LID support 2017-08-18 14:47:37 -04:00
main.c IB/mlx4: Check for egress flow steering 2018-04-04 12:06:24 -06:00
Makefile
mcg.c IB/mlx4: Suppress gcc 7 fall-through complaints 2017-10-14 20:47:06 -04:00
mlx4_ib.h IB/mlx4: Add Scatter FCS support over WQ creation 2018-03-15 15:58:05 -06:00
mr.c IB/mlx4: Mark user MR as writable if actual virtual memory is writable 2018-05-28 11:41:39 -06:00
qp.c RDMA/mlx4: Add missed RSS hash inner header flag 2018-04-27 14:22:23 -04:00
srq.c IB/core: Separate CQ handle in SRQ context 2017-08-29 08:30:16 -04:00
sysfs.c IB/mlx4: fix sprintf format warning 2017-09-13 18:53:15 -07:00