[PATCH 4.15 096/168] RDMA/cma: Fix rdma_cm path querying for RoCE

2018-04-10 Thread Greg Kroah-Hartman
4.15-stable review patch.  If anyone has any objections, please let me know.

--

From: Parav Pandit 


[ Upstream commit 89838118a515847d3e5c904d2e022779a7173bec ]

The 'if' logic in ucma_query_path was broken with OPA was introduced
and started to treat RoCE paths as as OPA paths. Invert the logic
of the 'if' so only OPA paths are treated as OPA paths.

Otherwise the path records returned to rdma_cma users are mangled
when in RoCE mode.

Fixes: 57520751445b ("IB/SA: Add OPA path record type")
Signed-off-by: Parav Pandit 
Reviewed-by: Mark Bloch 
Signed-off-by: Leon Romanovsky 
Signed-off-by: Jason Gunthorpe 
Signed-off-by: Sasha Levin 
Signed-off-by: Greg Kroah-Hartman 
---
 drivers/infiniband/core/ucma.c |7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -914,13 +914,14 @@ static ssize_t ucma_query_path(struct uc
 
resp->path_data[i].flags = IB_PATH_GMP | IB_PATH_PRIMARY |
   IB_PATH_BIDIRECTIONAL;
-   if (rec->rec_type == SA_PATH_REC_TYPE_IB) {
-   ib_sa_pack_path(rec, >path_data[i].path_rec);
-   } else {
+   if (rec->rec_type == SA_PATH_REC_TYPE_OPA) {
struct sa_path_rec ib;
 
sa_convert_path_opa_to_ib(, rec);
ib_sa_pack_path(, >path_data[i].path_rec);
+
+   } else {
+   ib_sa_pack_path(rec, >path_data[i].path_rec);
}
}
 




[PATCH 4.15 096/168] RDMA/cma: Fix rdma_cm path querying for RoCE

2018-04-10 Thread Greg Kroah-Hartman
4.15-stable review patch.  If anyone has any objections, please let me know.

--

From: Parav Pandit 


[ Upstream commit 89838118a515847d3e5c904d2e022779a7173bec ]

The 'if' logic in ucma_query_path was broken with OPA was introduced
and started to treat RoCE paths as as OPA paths. Invert the logic
of the 'if' so only OPA paths are treated as OPA paths.

Otherwise the path records returned to rdma_cma users are mangled
when in RoCE mode.

Fixes: 57520751445b ("IB/SA: Add OPA path record type")
Signed-off-by: Parav Pandit 
Reviewed-by: Mark Bloch 
Signed-off-by: Leon Romanovsky 
Signed-off-by: Jason Gunthorpe 
Signed-off-by: Sasha Levin 
Signed-off-by: Greg Kroah-Hartman 
---
 drivers/infiniband/core/ucma.c |7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -914,13 +914,14 @@ static ssize_t ucma_query_path(struct uc
 
resp->path_data[i].flags = IB_PATH_GMP | IB_PATH_PRIMARY |
   IB_PATH_BIDIRECTIONAL;
-   if (rec->rec_type == SA_PATH_REC_TYPE_IB) {
-   ib_sa_pack_path(rec, >path_data[i].path_rec);
-   } else {
+   if (rec->rec_type == SA_PATH_REC_TYPE_OPA) {
struct sa_path_rec ib;
 
sa_convert_path_opa_to_ib(, rec);
ib_sa_pack_path(, >path_data[i].path_rec);
+
+   } else {
+   ib_sa_pack_path(rec, >path_data[i].path_rec);
}
}