[PATCH] opensm/osm_torus.c: Fix crash in torus_update_osm_vlarb

2012-12-03 Thread Hal Rosenstock

Signed-off-by: Alex Netes ale...@mellanox.com
Signed-off-by: Hal Rosenstock h...@mellanox.com
---
 opensm/osm_torus.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/opensm/osm_torus.c b/opensm/osm_torus.c
index c06f8d4..075f84a 100644
--- a/opensm/osm_torus.c
+++ b/opensm/osm_torus.c
@@ -8089,7 +8089,7 @@ void torus_update_osm_vlarb(void *context, osm_physp_t 
*osm_phys_port,
 * So, leave VL 0 alone, remap VL 4 to VL 1, zero out the rest,
 * and compress out the zero entries to the end.
 */
-   if (!sw || !port_num ||
+   if (!sw || !port_num || sw-port[port_num] ||
sw-port[port_num]-pgrp-port_grp != 2 * TORUS_MAX_DIM)
return;
  
-- 
1.7.8.2

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm/osm_torus.c: Fix crash in torus_update_osm_vlarb

2012-12-03 Thread Hal Rosenstock
On 12/3/2012 4:09 PM, Jim Schutt wrote:
 On 12/03/2012 08:26 AM, Hal Rosenstock wrote:

 Signed-off-by: Alex Netesale...@mellanox.com
 Signed-off-by: Hal Rosenstockh...@mellanox.com
 ---
   opensm/osm_torus.c |2 +-
   1 files changed, 1 insertions(+), 1 deletions(-)

 diff --git a/opensm/osm_torus.c b/opensm/osm_torus.c
 index c06f8d4..075f84a 100644
 --- a/opensm/osm_torus.c
 +++ b/opensm/osm_torus.c
 @@ -8089,7 +8089,7 @@ void torus_update_osm_vlarb(void *context,
 osm_physp_t *osm_phys_port,
* So, leave VL 0 alone, remap VL 4 to VL 1, zero out the rest,
* and compress out the zero entries to the end.
*/
 -if (!sw || !port_num ||
 +if (!sw || !port_num || sw-port[port_num] ||
   sw-port[port_num]-pgrp-port_grp != 2 * TORUS_MAX_DIM)
   return;

 
 With the patch as-is, if torus_update_osm_vlarb() returns early
 for any non-NULL switch port, it will never do any updates.
 
 If the crash was that sw-port[port_num] was NULL,
 shouldn't the check be !sw-port[port_num] ?
 
 Can you tell me more about the test case that leads to the crash?
 
 Is it that there's a switch with a port that's not connected
 to anything, and torus_update_osm_vlarb() was called for it?
 
 Testing for a non-NULL sw-port[port_num] is definitely the right
 thing to do to handle that case, and I'm sorry I missed it earlier.
 
 If not, then something else is likely broken, and we need to find
 and fix that.

Yes, it was meant to be NULL pointer check. v2 of patch coming soon.

-- Hal

 
 -- Jim
 
 

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm/osm_torus.c: Fix crash in torus_update_osm_vlarb

2012-12-03 Thread Jim Schutt

On 12/03/2012 08:26 AM, Hal Rosenstock wrote:


Signed-off-by: Alex Netesale...@mellanox.com
Signed-off-by: Hal Rosenstockh...@mellanox.com
---
  opensm/osm_torus.c |2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/opensm/osm_torus.c b/opensm/osm_torus.c
index c06f8d4..075f84a 100644
--- a/opensm/osm_torus.c
+++ b/opensm/osm_torus.c
@@ -8089,7 +8089,7 @@ void torus_update_osm_vlarb(void *context, osm_physp_t 
*osm_phys_port,
 * So, leave VL 0 alone, remap VL 4 to VL 1, zero out the rest,
 * and compress out the zero entries to the end.
 */
-   if (!sw || !port_num ||
+   if (!sw || !port_num || sw-port[port_num] ||
sw-port[port_num]-pgrp-port_grp != 2 * TORUS_MAX_DIM)
return;



With the patch as-is, if torus_update_osm_vlarb() returns early
for any non-NULL switch port, it will never do any updates.

If the crash was that sw-port[port_num] was NULL,
shouldn't the check be !sw-port[port_num] ?

Can you tell me more about the test case that leads to the crash?

Is it that there's a switch with a port that's not connected
to anything, and torus_update_osm_vlarb() was called for it?

Testing for a non-NULL sw-port[port_num] is definitely the right
thing to do to handle that case, and I'm sorry I missed it earlier.

If not, then something else is likely broken, and we need to find
and fix that.

-- Jim

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html