Author: tfaber
Date: Fri Sep 4 16:01:46 2015
New Revision: 69003
URL:
http://svn.reactos.org/svn/reactos?rev=69003&view=rev
Log:
[CDROM]
- Avoid IRP leaks
Modified:
trunk/reactos/drivers/storage/class/cdrom/cdrom.c
Modified: trunk/reactos/drivers/storage/class/cdrom/cdrom.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/cdro…
==============================================================================
--- trunk/reactos/drivers/storage/class/cdrom/cdrom.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/storage/class/cdrom/cdrom.c [iso-8859-1] Fri Sep 4 16:01:46
2015
@@ -2139,7 +2139,6 @@
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 @@
//
IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ ExFreePool(senseBuffer);
+ ExFreePool(srb);
+ IoFreeIrp(irp2);
return;
} // end switch()
@@ -2953,6 +2955,17 @@
(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