diff -up -r -X \mshefty\scm\gen1\trunk\docs\dontdiff.txt -I '\$Id' c:\mshefty\scm\svn\gen1\branches\wof2-2\core\bus/kernel/bus_pnp.c c:\mshefty\scm\svn\gen1\trunk\core\bus/kernel/bus_pnp.c
--- c:\mshefty\scm\svn\gen1\branches\wof2-2\core\bus/kernel/bus_pnp.c	2010-01-21 13:00:53.990000000 -0800
+++ c:\mshefty\scm\svn\gen1\trunk\core\bus/kernel/bus_pnp.c	2010-01-28 20:43:19.812500000 -0800
@@ -428,6 +428,10 @@ __register_ca(
 	{
 		BUS_TRACE_EXIT( BUS_DBG_ERROR, ("ib_register_ca returned %s.\n",
 			ib_get_err_str(ib_status)) );
+		p_ext->hca_ifc.InterfaceHeader.InterfaceDereference(
+			p_ext->hca_ifc.InterfaceHeader.Context);
+		p_ext->hca_ifc_taken = FALSE;
+		
 		return STATUS_UNSUCCESSFUL;
 	}
 	BUS_TRACE_EXIT(BUS_DBG_PNP, ("%s bound to CA guid %I64x\n",
