rds: tcp: various endian-ness fixes
Found when testing between sparc and x86 machines on different subnets, so the address comparison patterns hit the corner cases and brought out some bugs fixed by this patch. Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com> Tested-by: Imanti Mendez <imanti.mendez@oracle.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
41500c3e2a
commit
00354de577
@@ -127,7 +127,7 @@ void rds_queue_reconnect(struct rds_conn_path *cp)
|
||||
|
||||
/* let peer with smaller addr initiate reconnect, to avoid duels */
|
||||
if (conn->c_trans->t_type == RDS_TRANS_TCP &&
|
||||
conn->c_laddr > conn->c_faddr)
|
||||
!IS_CANONICAL(conn->c_laddr, conn->c_faddr))
|
||||
return;
|
||||
|
||||
set_bit(RDS_RECONNECT_PENDING, &cp->cp_flags);
|
||||
@@ -156,7 +156,8 @@ void rds_connect_worker(struct work_struct *work)
|
||||
struct rds_connection *conn = cp->cp_conn;
|
||||
int ret;
|
||||
|
||||
if (cp->cp_index > 0 && cp->cp_conn->c_laddr > cp->cp_conn->c_faddr)
|
||||
if (cp->cp_index > 0 &&
|
||||
!IS_CANONICAL(cp->cp_conn->c_laddr, cp->cp_conn->c_faddr))
|
||||
return;
|
||||
clear_bit(RDS_RECONNECT_PENDING, &cp->cp_flags);
|
||||
ret = rds_conn_path_transition(cp, RDS_CONN_DOWN, RDS_CONN_CONNECTING);
|
||||
|
Reference in New Issue
Block a user