winverbs: fix cleanup in error handling cases
authorshefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 31 Jul 2009 16:50:21 +0000 (16:50 +0000)
committershefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 31 Jul 2009 16:50:21 +0000 (16:50 +0000)
commit6fc13fc1fe91a3eeb0291fcd1fbf673949c0e924
treef73642a01089d860ca086a910e0517c42f232f58
parentf753e975fd16d1fddd56d9416c7f1b77906994d2
winverbs: fix cleanup in error handling cases

Running the ndmw test results in a crash in the winverbs driver.  The
crash is caused by improper cleanup in the winverbs driver as a result
of a failure trying to allocate a memory window.

In studying the crash, the same situation could arise if other objects
also fail to be created (QPs, CQs, PDs, etc.)  To fix the crash and
simplify the code, explicit calls to used to increment the reference
count on referenced objects, rather than simply holding onto the
reference that was acquired when the object was validated.  (The latter
is slightly more efficient, but results in less maintainable code
once any fix is applied.)

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2320 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
core/winverbs/kernel/wv_pd.c
core/winverbs/kernel/wv_qp.c
core/winverbs/kernel/wv_srq.c