From 1f2527bd6b907359625739ada967dd21cb5438ac Mon Sep 17 00:00:00 2001 From: Roland Dreier Date: Mon, 15 Aug 2005 07:35:16 -0700 Subject: [PATCH] --- yaml --- r: 6150 b: refs/heads/master c: ffbf4c34f1916fa1e0554269c94c57da4a21a348 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/infiniband/core/fmr_pool.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 23de2bb0158a..70f2a04a74b2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2e8b981c5d5c6fe5479ad47c44e3e76ebb5408ef +refs/heads/master: ffbf4c34f1916fa1e0554269c94c57da4a21a348 diff --git a/trunk/drivers/infiniband/core/fmr_pool.c b/trunk/drivers/infiniband/core/fmr_pool.c index 7763b31abba7..1f7374927f38 100644 --- a/trunk/drivers/infiniband/core/fmr_pool.c +++ b/trunk/drivers/infiniband/core/fmr_pool.c @@ -334,6 +334,7 @@ void ib_destroy_fmr_pool(struct ib_fmr_pool *pool) { struct ib_pool_fmr *fmr; struct ib_pool_fmr *tmp; + LIST_HEAD(fmr_list); int i; kthread_stop(pool->thread); @@ -341,6 +342,11 @@ void ib_destroy_fmr_pool(struct ib_fmr_pool *pool) i = 0; list_for_each_entry_safe(fmr, tmp, &pool->free_list, list) { + if (fmr->remap_count) { + INIT_LIST_HEAD(&fmr_list); + list_add_tail(&fmr->fmr->list, &fmr_list); + ib_unmap_fmr(&fmr_list); + } ib_dealloc_fmr(fmr->fmr); list_del(&fmr->list); kfree(fmr);