diff options
Diffstat (limited to 'net/rds/iw_rdma.c')
-rw-r--r-- | net/rds/iw_rdma.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/net/rds/iw_rdma.c b/net/rds/iw_rdma.c index de4a1b16bf7b..13dc1862d862 100644 --- a/net/rds/iw_rdma.c +++ b/net/rds/iw_rdma.c | |||
@@ -31,6 +31,7 @@ | |||
31 | * | 31 | * |
32 | */ | 32 | */ |
33 | #include <linux/kernel.h> | 33 | #include <linux/kernel.h> |
34 | #include <linux/slab.h> | ||
34 | 35 | ||
35 | #include "rds.h" | 36 | #include "rds.h" |
36 | #include "rdma.h" | 37 | #include "rdma.h" |
@@ -245,11 +246,8 @@ void __rds_iw_destroy_conns(struct list_head *list, spinlock_t *list_lock) | |||
245 | INIT_LIST_HEAD(list); | 246 | INIT_LIST_HEAD(list); |
246 | spin_unlock_irq(list_lock); | 247 | spin_unlock_irq(list_lock); |
247 | 248 | ||
248 | list_for_each_entry_safe(ic, _ic, &tmp_list, iw_node) { | 249 | list_for_each_entry_safe(ic, _ic, &tmp_list, iw_node) |
249 | if (ic->conn->c_passive) | ||
250 | rds_conn_destroy(ic->conn->c_passive); | ||
251 | rds_conn_destroy(ic->conn); | 250 | rds_conn_destroy(ic->conn); |
252 | } | ||
253 | } | 251 | } |
254 | 252 | ||
255 | static void rds_iw_set_scatterlist(struct rds_iw_scatterlist *sg, | 253 | static void rds_iw_set_scatterlist(struct rds_iw_scatterlist *sg, |
@@ -576,8 +574,8 @@ void rds_iw_free_mr(void *trans_private, int invalidate) | |||
576 | rds_iw_free_fastreg(pool, ibmr); | 574 | rds_iw_free_fastreg(pool, ibmr); |
577 | 575 | ||
578 | /* If we've pinned too many pages, request a flush */ | 576 | /* If we've pinned too many pages, request a flush */ |
579 | if (atomic_read(&pool->free_pinned) >= pool->max_free_pinned | 577 | if (atomic_read(&pool->free_pinned) >= pool->max_free_pinned || |
580 | || atomic_read(&pool->dirty_count) >= pool->max_items / 10) | 578 | atomic_read(&pool->dirty_count) >= pool->max_items / 10) |
581 | queue_work(rds_wq, &pool->flush_worker); | 579 | queue_work(rds_wq, &pool->flush_worker); |
582 | 580 | ||
583 | if (invalidate) { | 581 | if (invalidate) { |