[rds-devel] [PATCH] rds: Initialize rds_ibdev->ipaddr_list before it could get used

Venkat Venkatsubra venkat.x.venkatsubra at oracle.com
Thu Oct 4 12:23:17 PDT 2012


Possibility of accessing rds_ibdev->ipaddr_list before it is initialized
can result in a crash in rds_ib_dev_free. e.g. when rds_ib_create_mr_pool
fails in rds_ib_add_one.

Signed-off-by: Venkat Venkatsubra <venkat.x.venkatsubra at oracle.com>
---
 net/rds/ib.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/rds/ib.c b/net/rds/ib.c
index b4c8b00..09acf62 100644
--- a/net/rds/ib.c
+++ b/net/rds/ib.c
@@ -157,6 +157,9 @@ static void rds_ib_add_one(struct ib_device *device)
 	rds_ibdev->max_initiator_depth = dev_attr->max_qp_init_rd_atom;
 	rds_ibdev->max_responder_resources = dev_attr->max_qp_rd_atom;
 
+	INIT_LIST_HEAD(&rds_ibdev->ipaddr_list);
+	INIT_LIST_HEAD(&rds_ibdev->conn_list);
+
 	rds_ibdev->dev = device;
 	rds_ibdev->pd = ib_alloc_pd(device);
 	if (IS_ERR(rds_ibdev->pd)) {
@@ -176,9 +179,6 @@ static void rds_ib_add_one(struct ib_device *device)
 		goto put_dev;
 	}
 
-	INIT_LIST_HEAD(&rds_ibdev->ipaddr_list);
-	INIT_LIST_HEAD(&rds_ibdev->conn_list);
-
 	down_write(&rds_ib_devices_lock);
 	list_add_tail_rcu(&rds_ibdev->list, &rds_ib_devices);
 	up_write(&rds_ib_devices_lock);
-- 
1.7.6




More information about the rds-devel mailing list