From e1aa00c22e53095e0e9cb4e1d98c9f1c23e9cb23 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 14 Jul 2010 16:57:50 -0700 Subject: [PATCH] Refresh of wv-mr --- trunk/core/winverbs/kernel/wv_pd.c | 2 +- trunk/core/winverbs/kernel/wv_provider.c | 7 +++++++ trunk/core/winverbs/kernel/wv_provider.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/trunk/core/winverbs/kernel/wv_pd.c b/trunk/core/winverbs/kernel/wv_pd.c index de6e75d6..ab920118 100644 --- a/trunk/core/winverbs/kernel/wv_pd.c +++ b/trunk/core/winverbs/kernel/wv_pd.c @@ -366,7 +366,7 @@ void WvMrDeregister(WV_PROVIDER *pProvider, WDFREQUEST Request) status = WdfRequestRetrieveInputBuffer(Request, sizeof(UINT64), &id, NULL); if (!NT_SUCCESS(status)) { - goto complete; + goto out; } KeAcquireGuardedMutex(&pProvider->Lock); diff --git a/trunk/core/winverbs/kernel/wv_provider.c b/trunk/core/winverbs/kernel/wv_provider.c index d8b83f9b..08eaac7c 100644 --- a/trunk/core/winverbs/kernel/wv_provider.c +++ b/trunk/core/winverbs/kernel/wv_provider.c @@ -97,6 +97,7 @@ NTSTATUS WvProviderInit(WDFDEVICE Device, WV_PROVIDER *pProvider) IndexListInit(&pProvider->PdIndex); IndexListInit(&pProvider->SrqIndex); IndexListInit(&pProvider->QpIndex); + IndexListInit(&pProvider->MrIndex); IndexListInit(&pProvider->MwIndex); IndexListInit(&pProvider->AhIndex); IndexListInit(&pProvider->EpIndex); @@ -130,6 +131,7 @@ void WvProviderCleanup(WV_PROVIDER *pProvider) WV_PROTECTION_DOMAIN *pd; WV_SHARED_RECEIVE_QUEUE *srq; WV_QUEUE_PAIR *qp; + WV_MEMORY_REGION *mr; WV_MEMORY_WINDOW *mw; WV_ADDRESS_HANDLE *ah; WV_ENDPOINT *ep; @@ -153,6 +155,10 @@ void WvProviderCleanup(WV_PROVIDER *pProvider) RemoveEntryList(&mw->Entry); WvMwFree(mw); } + while ((mr = IndexListRemoveHead(&pProvider->MrIndex)) != NULL) { + RemoveEntryList(&mr->Entry); + WvMrFree(mr); + } while ((qp = IndexListRemoveHead(&pProvider->QpIndex)) != NULL) { RemoveEntryList(&qp->Entry); WvQpFree(qp); @@ -181,6 +187,7 @@ void WvProviderCleanup(WV_PROVIDER *pProvider) IndexListDestroy(&pProvider->EpIndex); IndexListDestroy(&pProvider->AhIndex); IndexListDestroy(&pProvider->MwIndex); + IndexListDestroy(&pProvider->MrIndex); IndexListDestroy(&pProvider->QpIndex); IndexListDestroy(&pProvider->SrqIndex); IndexListDestroy(&pProvider->PdIndex); diff --git a/trunk/core/winverbs/kernel/wv_provider.h b/trunk/core/winverbs/kernel/wv_provider.h index bd430fb0..b64eb02c 100644 --- a/trunk/core/winverbs/kernel/wv_provider.h +++ b/trunk/core/winverbs/kernel/wv_provider.h @@ -66,6 +66,7 @@ typedef struct _WV_PROVIDER INDEX_LIST PdIndex; INDEX_LIST SrqIndex; INDEX_LIST QpIndex; + INDEX_LIST MrIndex; INDEX_LIST MwIndex; INDEX_LIST AhIndex; INDEX_LIST EpIndex; -- 2.46.0