winverbs: EP is not in a provider list, so don't try to remove it
authorshefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Wed, 26 Aug 2009 16:47:57 +0000 (16:47 +0000)
committershefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Wed, 26 Aug 2009 16:47:57 +0000 (16:47 +0000)
Endpoints are not maintained in a list associated with a provider.  The list
entry for an endpoint is used to track connection requests with listens.  When
an endpoint is unassociated from a listen, it is removed from the listen list.
Trying to remove it from a list during provider cleanup results in a duplicate
removal, can corrupt the listen list, and may access freed memory.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2385 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

core/winverbs/kernel/wv_provider.c

index 19053a8..2998afe 100644 (file)
@@ -102,7 +102,6 @@ void WvProviderCleanup(WV_PROVIDER *pProvider)
                }\r
        }\r
        while ((ep = IndexListRemoveHead(&pProvider->EpIndex)) != NULL) {\r
-               RemoveEntryList(&ep->Entry);\r
                WvEpFree(ep);\r
        }\r
        while ((ah = IndexListRemoveHead(&pProvider->AhIndex)) != NULL) {\r