aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/ib_cm.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/rds/ib_cm.c')
-rw-r--r--net/rds/ib_cm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c
index a9fb917c00bb..10f6a8815cd0 100644
--- a/net/rds/ib_cm.c
+++ b/net/rds/ib_cm.c
@@ -709,12 +709,19 @@ int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
709{ 709{
710 struct rds_ib_connection *ic; 710 struct rds_ib_connection *ic;
711 unsigned long flags; 711 unsigned long flags;
712 int ret;
712 713
713 /* XXX too lazy? */ 714 /* XXX too lazy? */
714 ic = kzalloc(sizeof(struct rds_ib_connection), GFP_KERNEL); 715 ic = kzalloc(sizeof(struct rds_ib_connection), GFP_KERNEL);
715 if (!ic) 716 if (!ic)
716 return -ENOMEM; 717 return -ENOMEM;
717 718
719 ret = rds_ib_recv_alloc_caches(ic);
720 if (ret) {
721 kfree(ic);
722 return ret;
723 }
724
718 INIT_LIST_HEAD(&ic->ib_node); 725 INIT_LIST_HEAD(&ic->ib_node);
719 tasklet_init(&ic->i_recv_tasklet, rds_ib_recv_tasklet_fn, 726 tasklet_init(&ic->i_recv_tasklet, rds_ib_recv_tasklet_fn,
720 (unsigned long) ic); 727 (unsigned long) ic);
@@ -763,6 +770,8 @@ void rds_ib_conn_free(void *arg)
763 list_del(&ic->ib_node); 770 list_del(&ic->ib_node);
764 spin_unlock_irq(lock_ptr); 771 spin_unlock_irq(lock_ptr);
765 772
773 rds_ib_recv_free_caches(ic);
774
766 kfree(ic); 775 kfree(ic);
767} 776}
768 777