Loading...
iokit/Kernel/IOPMchangeNoteList.cpp xnu-201.42.3 xnu-792.2.4
--- xnu/xnu-201.42.3/iokit/Kernel/IOPMchangeNoteList.cpp
+++ xnu/xnu-792.2.4/iokit/Kernel/IOPMchangeNoteList.cpp
@@ -21,6 +21,7 @@
  */
 #include <IOKit/pwr_mgt/IOPM.h>
 #include <IOKit/pwr_mgt/IOPMchangeNoteList.h>
+#include <IOKit/pwr_mgt/IOPowerConnection.h>
 
 #define super OSObject
 OSDefineMetaClassAndStructors(IOPMchangeNoteList,OSObject)
@@ -104,6 +105,13 @@
 
 IOReturn IOPMchangeNoteList::releaseHeadChangeNote ( void )
 {
+    IOPowerConnection *tmp;
+
+    if((tmp = changeNote[firstInList].parent)) {
+       changeNote[firstInList].parent = 0;
+       tmp->release();
+    }
+
     changeNote[firstInList].flags = IOPMNotInUse;
     firstInList = increment(firstInList);
     return IOPMNoErr;
@@ -121,6 +129,13 @@
 
 IOReturn IOPMchangeNoteList::releaseTailChangeNote ( void )
 {
+    IOPowerConnection *tmp;
+    
+    if((tmp = changeNote[firstInList].parent)) {
+       changeNote[firstInList].parent = 0;
+       tmp->release();
+    }
+
     firstUnused = decrement(firstUnused);
     changeNote[firstUnused].flags = IOPMNotInUse;
     return IOPMNoErr;