* FAILED: patch "[PATCH] IB/core: Make testing MR flags for writability a static" failed to apply to 4.4-stable tree
@ 2018-07-01 9:37 gregkh
2018-08-12 13:56 ` Sudip Mukherjee
0 siblings, 1 reply; 5+ messages in thread
From: gregkh @ 2018-07-01 9:37 UTC (permalink / raw)
To: jackm, jgg, leonro, stable; +Cc: stable
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 08bb558ac11ab944e0539e78619d7b4c356278bd Mon Sep 17 00:00:00 2001
From: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date: Wed, 23 May 2018 15:30:30 +0300
Subject: [PATCH] IB/core: Make testing MR flags for writability a static
inline function
Make the MR writability flags check, which is performed in umem.c,
a static inline function in file ib_verbs.h
This allows the function to be used by low-level infiniband drivers.
Cc: <stable@vger.kernel.org>
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>
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 2b6c9b516070..d76455edd292 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -119,16 +119,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
umem->length = size;
umem->address = addr;
umem->page_shift = PAGE_SHIFT;
- /*
- * We ask for writable memory if any of the following
- * access flags are set. "Local write" and "remote write"
- * obviously require write access. "Remote atomic" can do
- * things like fetch and add, which will modify memory, and
- * "MW bind" can change permissions by binding a window.
- */
- umem->writable = !!(access &
- (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE |
- IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND));
+ umem->writable = ib_access_writable(access);
if (access & IB_ACCESS_ON_DEMAND) {
ret = ib_umem_odp_get(context, umem, access);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 9fc8a825aa28..20fa5c591e81 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -3734,6 +3734,20 @@ static inline int ib_check_mr_access(int flags)
return 0;
}
+static inline bool ib_access_writable(int access_flags)
+{
+ /*
+ * We have writable memory backing the MR if any of the following
+ * access flags are set. "Local write" and "remote write" obviously
+ * require write access. "Remote atomic" can do things like fetch and
+ * add, which will modify memory, and "MW bind" can change permissions
+ * by binding a window.
+ */
+ return access_flags &
+ (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE |
+ IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND);
+}
+
/**
* ib_check_mr_status: lightweight check of MR status.
* This routine may provide status checks on a selected
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: FAILED: patch "[PATCH] IB/core: Make testing MR flags for writability a static" failed to apply to 4.4-stable tree
2018-07-01 9:37 FAILED: patch "[PATCH] IB/core: Make testing MR flags for writability a static" failed to apply to 4.4-stable tree gregkh
@ 2018-08-12 13:56 ` Sudip Mukherjee
2018-08-12 15:28 ` Greg KH
0 siblings, 1 reply; 5+ messages in thread
From: Sudip Mukherjee @ 2018-08-12 13:56 UTC (permalink / raw)
To: gregkh; +Cc: jackm, jgg, leonro, stable
[-- Attachment #1: Type: text/plain, Size: 545 bytes --]
Hi Greg,
On Sun, Jul 01, 2018 at 11:37:25AM +0200, gregkh@linuxfoundation.org wrote:
>
> The patch below does not apply to the 4.4-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@vger.kernel.org>.
The attached backported patch should apply to 4.4-stable and also to
4.9-stable.
Though I am confused about why this should be in stable, unless some
later fix, required in stable, depends on this.
--
Regards
Sudip
[-- Attachment #2: 0002-IB-core-Make-testing-MR-flags-for-writability-a-stat.patch --]
[-- Type: text/x-diff, Size: 2762 bytes --]
>From 5a8146ce6d32fd2321a0935ea7169be2d785fd41 Mon Sep 17 00:00:00 2001
From: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date: Wed, 23 May 2018 15:30:30 +0300
Subject: [PATCH] IB/core: Make testing MR flags for writability a static inline function
commit 08bb558ac11ab944e0539e78619d7b4c356278bd upstream
Make the MR writability flags check, which is performed in umem.c,
a static inline function in file ib_verbs.h
This allows the function to be used by low-level infiniband drivers.
Cc: <stable@vger.kernel.org>
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>
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
---
drivers/infiniband/core/umem.c | 11 +----------
include/rdma/ib_verbs.h | 14 ++++++++++++++
2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 6790ebb366dd..98fd9a594841 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -122,16 +122,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
umem->address = addr;
umem->page_size = PAGE_SIZE;
umem->pid = get_task_pid(current, PIDTYPE_PID);
- /*
- * We ask for writable memory if any of the following
- * access flags are set. "Local write" and "remote write"
- * obviously require write access. "Remote atomic" can do
- * things like fetch and add, which will modify memory, and
- * "MW bind" can change permissions by binding a window.
- */
- umem->writable = !!(access &
- (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE |
- IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND));
+ umem->writable = ib_access_writable(access);
if (access & IB_ACCESS_ON_DEMAND) {
put_pid(umem->pid);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 120da1d7f57e..10fefb0dc640 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -3007,6 +3007,20 @@ static inline int ib_check_mr_access(int flags)
return 0;
}
+static inline bool ib_access_writable(int access_flags)
+{
+ /*
+ * We have writable memory backing the MR if any of the following
+ * access flags are set. "Local write" and "remote write" obviously
+ * require write access. "Remote atomic" can do things like fetch and
+ * add, which will modify memory, and "MW bind" can change permissions
+ * by binding a window.
+ */
+ return access_flags &
+ (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE |
+ IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND);
+}
+
/**
* ib_check_mr_status: lightweight check of MR status.
* This routine may provide status checks on a selected
--
2.11.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: FAILED: patch "[PATCH] IB/core: Make testing MR flags for writability a static" failed to apply to 4.4-stable tree
2018-08-12 13:56 ` Sudip Mukherjee
@ 2018-08-12 15:28 ` Greg KH
2018-08-12 17:06 ` Jason Gunthorpe
0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2018-08-12 15:28 UTC (permalink / raw)
To: Sudip Mukherjee; +Cc: jackm, jgg, leonro, stable
On Sun, Aug 12, 2018 at 02:56:49PM +0100, Sudip Mukherjee wrote:
> Hi Greg,
>
> On Sun, Jul 01, 2018 at 11:37:25AM +0200, gregkh@linuxfoundation.org wrote:
> >
> > The patch below does not apply to the 4.4-stable tree.
> > If someone wants it applied there, or to any other stable or longterm
> > tree, then please email the backport, including the original git commit
> > id to <stable@vger.kernel.org>.
>
> The attached backported patch should apply to 4.4-stable and also to
> 4.9-stable.
>
> Though I am confused about why this should be in stable, unless some
> later fix, required in stable, depends on this.
That's a good question. Can some IB developer please answer this before
I queue this up?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: FAILED: patch "[PATCH] IB/core: Make testing MR flags for writability a static" failed to apply to 4.4-stable tree
2018-08-12 15:28 ` Greg KH
@ 2018-08-12 17:06 ` Jason Gunthorpe
2018-08-12 17:49 ` Sudip Mukherjee
0 siblings, 1 reply; 5+ messages in thread
From: Jason Gunthorpe @ 2018-08-12 17:06 UTC (permalink / raw)
To: Greg KH; +Cc: Sudip Mukherjee, jackm, leonro, stable
On Sun, Aug 12, 2018 at 05:28:10PM +0200, Greg KH wrote:
> On Sun, Aug 12, 2018 at 02:56:49PM +0100, Sudip Mukherjee wrote:
> > Hi Greg,
> >
> > On Sun, Jul 01, 2018 at 11:37:25AM +0200, gregkh@linuxfoundation.org wrote:
> > >
> > > The patch below does not apply to the 4.4-stable tree.
> > > If someone wants it applied there, or to any other stable or longterm
> > > tree, then please email the backport, including the original git commit
> > > id to <stable@vger.kernel.org>.
> >
> > The attached backported patch should apply to 4.4-stable and also to
> > 4.9-stable.
> >
> > Though I am confused about why this should be in stable, unless some
> > later fix, required in stable, depends on this.
>
> That's a good question. Can some IB developer please answer this before
> I queue this up?
It is required for this upstream patch:
commit d8f9cc328c8888369880e2527e9186d745f2bbf6
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date: Wed May 23 15:30:31 2018 +0300
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: 9376932d0c26 ("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>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: FAILED: patch "[PATCH] IB/core: Make testing MR flags for writability a static" failed to apply to 4.4-stable tree
2018-08-12 17:06 ` Jason Gunthorpe
@ 2018-08-12 17:49 ` Sudip Mukherjee
0 siblings, 0 replies; 5+ messages in thread
From: Sudip Mukherjee @ 2018-08-12 17:49 UTC (permalink / raw)
To: Jason Gunthorpe; +Cc: Greg KH, jackm, leonro, stable
On Sun, Aug 12, 2018 at 11:06:07AM -0600, Jason Gunthorpe wrote:
> On Sun, Aug 12, 2018 at 05:28:10PM +0200, Greg KH wrote:
> > On Sun, Aug 12, 2018 at 02:56:49PM +0100, Sudip Mukherjee wrote:
> > > Hi Greg,
> > >
> > > On Sun, Jul 01, 2018 at 11:37:25AM +0200, gregkh@linuxfoundation.org wrote:
> > > >
> > > > The patch below does not apply to the 4.4-stable tree.
> > > > If someone wants it applied there, or to any other stable or longterm
> > > > tree, then please email the backport, including the original git commit
> > > > id to <stable@vger.kernel.org>.
> > >
> > > The attached backported patch should apply to 4.4-stable and also to
> > > 4.9-stable.
> > >
> > > Though I am confused about why this should be in stable, unless some
> > > later fix, required in stable, depends on this.
> >
> > That's a good question. Can some IB developer please answer this before
> > I queue this up?
>
> It is required for this upstream patch:
>
> commit d8f9cc328c8888369880e2527e9186d745f2bbf6
> Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
> Date: Wed May 23 15:30:31 2018 +0300
Thanks Jason.
Looks like d8f9cc328c88 ("IB/mlx4: Mark user MR as writable if actual
virtual memory is writable") will be needed in both 4.4-stable and
4.9-stable, but will need backporting.
--
Regards
Sudip
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-08-12 20:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-01 9:37 FAILED: patch "[PATCH] IB/core: Make testing MR flags for writability a static" failed to apply to 4.4-stable tree gregkh
2018-08-12 13:56 ` Sudip Mukherjee
2018-08-12 15:28 ` Greg KH
2018-08-12 17:06 ` Jason Gunthorpe
2018-08-12 17:49 ` Sudip Mukherjee
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).