- Avoid IRP leaks

svn path=/trunk/; revision=69003
This commit is contained in:
Thomas Faber
2015-09-04 16:01:46 +00:00
parent ddac0cda92
commit 2793ff5f85
+14 -1
View File
@@ -2139,7 +2139,6 @@ ScsiCdRomStartIo(
IoCompleteRequest(Irp, IO_DISK_INCREMENT);
ExFreePool(senseBuffer);
ExFreePool(srb);
IoFreeIrp(irp2);
IoStartNextPacket(DeviceObject, FALSE);
DebugPrint((2, "ScsiCdRomStartIo: [%lx] bailing with status %lx at line %s\n", Irp, Irp->IoStatus.Status, __LINE__));
return;
@@ -2764,6 +2763,9 @@ ScsiCdRomStartIo(
//
IoCompleteRequest(Irp, IO_NO_INCREMENT);
ExFreePool(senseBuffer);
ExFreePool(srb);
IoFreeIrp(irp2);
return;
} // end switch()
@@ -2953,6 +2955,17 @@ CdRomDeviceControlCompletion(
(realIrpStack->MajorFunction == IRP_MJ_INTERNAL_DEVICE_CONTROL)) &&
(realIrpStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_CDROM_CHECK_VERIFY)) {
ExFreePool(srb->SenseInfoBuffer);
if (srb->DataBuffer) {
ExFreePool(srb->DataBuffer);
}
ExFreePool(srb);
if (Irp->MdlAddress) {
IoFreeMdl(Irp->MdlAddress);
}
IoFreeIrp(Irp);
//
// Update the geometry information, as the media could have changed.
// The completion routine for this will complete the real irp and start