upl_abort(iopl.fIOPL, 0);
upl_deallocate(iopl.fIOPL);
}
+ error = kIOReturnNoMemory;
goto abortExit;
}
dataP = NULL;
}
if (kIOMemoryTypeVirtual == type || kIOMemoryTypeVirtual64 == type || kIOMemoryTypeUIO == type) {
+ if ((forDirection & kIODirectionPrepareAvoidThrottling) && NEED_TO_HARD_THROTTLE_THIS_TASK()) {
+ error = kIOReturnNotReady;
+ goto finish;
+ }
error = wireVirtual(forDirection);
}
}
}
+finish:
+
if (_prepareLock) {
IOLockUnlock(_prepareLock);
}