aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-03-02 17:31:35 -0500
committerDavid S. Miller <davem@davemloft.net>2011-03-02 17:31:35 -0500
commitb23dd4fe42b455af5c6e20966b7d6959fa8352ea (patch)
treebf97323eae9a8d084170e573ff2c0c40bc72c3cd /drivers/infiniband
parent452edd598f60522c11f7f88fdbab27eb36509d1a (diff)
ipv4: Make output route lookup return rtable directly.
Instead of on the stack. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/addr.c7
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.c3
-rw-r--r--drivers/infiniband/hw/cxgb4/cm.c3
-rw-r--r--drivers/infiniband/hw/nes/nes_cm.c3
4 files changed, 10 insertions, 6 deletions
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
index 8aba0ba57de..2d749937a96 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
@@ -193,10 +193,11 @@ static int addr4_resolve(struct sockaddr_in *src_in,
193 fl.nl_u.ip4_u.saddr = src_ip; 193 fl.nl_u.ip4_u.saddr = src_ip;
194 fl.oif = addr->bound_dev_if; 194 fl.oif = addr->bound_dev_if;
195 195
196 ret = ip_route_output_key(&init_net, &rt, &fl); 196 rt = ip_route_output_key(&init_net, &fl);
197 if (ret) 197 if (IS_ERR(rt)) {
198 ret = PTR_ERR(rt);
198 goto out; 199 goto out;
199 200 }
200 src_in->sin_family = AF_INET; 201 src_in->sin_family = AF_INET;
201 src_in->sin_addr.s_addr = rt->rt_src; 202 src_in->sin_addr.s_addr = rt->rt_src;
202 203
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
index e654285aa6b..e0ccbc53fbc 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -354,7 +354,8 @@ static struct rtable *find_route(struct t3cdev *dev, __be32 local_ip,
354 } 354 }
355 }; 355 };
356 356
357 if (ip_route_output_flow(&init_net, &rt, &fl, NULL)) 357 rt = ip_route_output_flow(&init_net, &fl, NULL);
358 if (IS_ERR(rt))
358 return NULL; 359 return NULL;
359 return rt; 360 return rt;
360} 361}
diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index 7e0484f18db..77b0eef2aad 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -331,7 +331,8 @@ static struct rtable *find_route(struct c4iw_dev *dev, __be32 local_ip,
331 } 331 }
332 }; 332 };
333 333
334 if (ip_route_output_flow(&init_net, &rt, &fl, NULL)) 334 rt = ip_route_output_flow(&init_net, &fl, NULL);
335 if (IS_ERR(rt))
335 return NULL; 336 return NULL;
336 return rt; 337 return rt;
337} 338}
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
index ec3aa11c36c..e81599cb1fe 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -1112,7 +1112,8 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi
1112 1112
1113 memset(&fl, 0, sizeof fl); 1113 memset(&fl, 0, sizeof fl);
1114 fl.nl_u.ip4_u.daddr = htonl(dst_ip); 1114 fl.nl_u.ip4_u.daddr = htonl(dst_ip);
1115 if (ip_route_output_key(&init_net, &rt, &fl)) { 1115 rt = ip_route_output_key(&init_net, &fl);
1116 if (IS_ERR(rt)) {
1116 printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n", 1117 printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",
1117 __func__, dst_ip); 1118 __func__, dst_ip);
1118 return rc; 1119 return rc;