Loading...
iokit/Kernel/IOInterruptController.cpp xnu-792.12.6 xnu-792.13.8
--- xnu/xnu-792.12.6/iokit/Kernel/IOInterruptController.cpp
+++ xnu/xnu-792.13.8/iokit/Kernel/IOInterruptController.cpp
@@ -435,6 +435,8 @@
   _numInterruptSources = 1;
   
   // Set up the IOInterruptSource to point at this.
+  parentController->retain();
+  parentSource->retain();
   _interruptSources[0].interruptController = parentController;
   _interruptSources[0].vectorData = parentSource;
   
@@ -674,7 +676,8 @@
 
 IOInterruptAction IOSharedInterruptController::getInterruptHandlerAddress(void)
 {
-    return (IOInterruptAction)&IOSharedInterruptController::handleInterrupt;
+    return OSMemberFunctionCast(IOInterruptAction,
+			this, &IOSharedInterruptController::handleInterrupt);
 }
 
 IOReturn IOSharedInterruptController::handleInterrupt(void * /*refCon*/,