[rds-devel] [PATCH 18/19] Teach transport->laddr_check() aware of struct net. - Make tcp_laddr_check() really works. - Make IB/IW laddr_check() can be compiled without warnning only.

Jie Liu jeff.liu at oracle.com
Sun Oct 7 05:18:10 PDT 2012


Signed-off-by: Jie Liu <jeff.liu at oracle.com>
---
 net/rds/ib.c        |    2 +-
 net/rds/iw.c        |    2 +-
 net/rds/rds.h       |    2 +-
 net/rds/tcp.c       |    5 +++--
 net/rds/transport.c |    2 +-
 5 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/net/rds/ib.c b/net/rds/ib.c
index b4c8b00..d0e5651 100644
--- a/net/rds/ib.c
+++ b/net/rds/ib.c
@@ -317,7 +317,7 @@ static void rds_ib_ic_info(struct socket *sock, unsigned int len,
  * allowed to influence which paths have priority.  We could call userspace
  * asserting this policy "routing".
  */
-static int rds_ib_laddr_check(__be32 addr)
+static int rds_ib_laddr_check(struct net *net, __be32 addr)
 {
 	int ret;
 	struct rdma_cm_id *cm_id;
diff --git a/net/rds/iw.c b/net/rds/iw.c
index 7826d46..00f810b 100644
--- a/net/rds/iw.c
+++ b/net/rds/iw.c
@@ -218,7 +218,7 @@ static void rds_iw_ic_info(struct socket *sock, unsigned int len,
  * allowed to influence which paths have priority.  We could call userspace
  * asserting this policy "routing".
  */
-static int rds_iw_laddr_check(__be32 addr)
+static int rds_iw_laddr_check(struct net *net, __be32 addr)
 {
 	int ret;
 	struct rdma_cm_id *cm_id;
diff --git a/net/rds/rds.h b/net/rds/rds.h
index a106a0d..0ea1955 100644
--- a/net/rds/rds.h
+++ b/net/rds/rds.h
@@ -426,7 +426,7 @@ struct rds_transport {
 	unsigned int		t_prefer_loopback:1;
 	unsigned int		t_type;
 
-	int (*laddr_check)(__be32 addr);
+	int (*laddr_check)(struct net *net, __be32 addr);
 	int (*conn_alloc)(struct rds_connection *conn, gfp_t gfp);
 	void (*conn_free)(struct net *net, void *data);
 	int (*conn_connect)(struct rds_connection *conn);
diff --git a/net/rds/tcp.c b/net/rds/tcp.c
index 2b61a8b..3f4b7ca 100644
--- a/net/rds/tcp.c
+++ b/net/rds/tcp.c
@@ -187,10 +187,11 @@ out:
 	spin_unlock_irqrestore(&net->rds.rds_tcp_tc_list_lock, flags);
 }
 
-static int rds_tcp_laddr_check(__be32 addr)
+static int rds_tcp_laddr_check(struct net *net, __be32 addr)
 {
-	if (inet_addr_type(&init_net, addr) == RTN_LOCAL)
+	if (inet_addr_type(net, addr) == RTN_LOCAL)
 		return 0;
+
 	return -EADDRNOTAVAIL;
 }
 
diff --git a/net/rds/transport.c b/net/rds/transport.c
index af1dfad..9c3c38a 100644
--- a/net/rds/transport.c
+++ b/net/rds/transport.c
@@ -90,7 +90,7 @@ struct rds_transport *rds_trans_get_preferred(struct net *net, __be32 addr)
 	for (i = 0; i < RDS_TRANS_COUNT; i++) {
 		trans = transports[i];
 
-		if (trans && (trans->laddr_check(addr) == 0) &&
+		if (trans && (trans->laddr_check(net, addr) == 0) &&
 		    (!trans->t_owner || try_module_get(trans->t_owner))) {
 			ret = trans;
 			break;
-- 
1.7.4.1




More information about the rds-devel mailing list