+
+ // panther, 3160200
+ // IOMachPort::releasePortForObject( obj, IKOT_IOKIT_CONNECT );
+
+ OSDictionary * dict;
+
+ IOTakeLock( gIOObjectPortLock);
+ obj->retain();
+
+ if( (dict = IOMachPort::dictForType( IKOT_IOKIT_CONNECT )))
+ {
+ IOMachPort * port;
+ port = (IOMachPort *) dict->getObject( (const OSSymbol *) obj );
+ if (port)
+ {
+ IOUserClient * uc;
+ if ((uc = OSDynamicCast(IOUserClient, obj)) && uc->mappings)
+ {
+ dict->setObject((const OSSymbol *) uc->mappings, port);
+ iokit_switch_object_port(port->port, uc->mappings, IKOT_IOKIT_CONNECT);
+
+ uc->mappings->release();
+ uc->mappings = 0;
+ }
+ dict->removeObject( (const OSSymbol *) obj );
+ }
+ }
+ obj->release();
+ IOUnlock( gIOObjectPortLock);
+