From 320491c5f10eaa663312bcf41fb1216eae1fe5db Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sat, 7 Jul 2007 01:39:19 +0000 Subject: [PATCH] -fix a memory leak -don't use uninitialized memory svn path=/trunk/; revision=27443 --- reactos/drivers/storage/scsiport/scsiport.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/reactos/drivers/storage/scsiport/scsiport.c b/reactos/drivers/storage/scsiport/scsiport.c index b36e69be431..9b2a68ed0e2 100644 --- a/reactos/drivers/storage/scsiport/scsiport.c +++ b/reactos/drivers/storage/scsiport/scsiport.c @@ -68,6 +68,7 @@ static NTSTATUS STDCALL ScsiPortCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +static DRIVER_DISPATCH ScsiPortDispatchScsi; static NTSTATUS STDCALL ScsiPortDispatchScsi(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); @@ -76,6 +77,7 @@ static NTSTATUS STDCALL ScsiPortDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); +static DRIVER_STARTIO ScsiPortStartIo; static VOID STDCALL ScsiPortStartIo(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); @@ -111,6 +113,7 @@ SpiGetSrbData(IN PVOID DeviceExtension, IN UCHAR Lun, IN UCHAR QueueTag); +static KSERVICE_ROUTINE ScsiPortIsr; static BOOLEAN STDCALL ScsiPortIsr(IN PKINTERRUPT Interrupt, IN PVOID ServiceContext); @@ -136,6 +139,7 @@ static VOID SpiSendRequestSense(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb); +static IO_COMPLETION_ROUTINE SpiCompletionRoutine; NTSTATUS STDCALL SpiCompletionRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp, @@ -2063,6 +2067,7 @@ SpiGetPciConfigData(IN PDRIVER_OBJECT DriverObject, DPRINT ("SpiGetPciConfiguration() called\n"); + RtlZeroMemory(&ResourceList, sizeof(PCM_RESOURCE_LIST)); SlotNumber.u.AsULONG = 0; /* Loop through all devices */ @@ -3022,7 +3027,10 @@ SpiSendInquiry (IN PDEVICE_OBJECT DeviceObject, SenseBuffer = ExAllocatePoolWithTag (NonPagedPool, SENSE_BUFFER_SIZE, TAG_SCSIPORT); if (SenseBuffer == NULL) + { + ExFreePool(InquiryBuffer); return STATUS_INSUFFICIENT_RESOURCES; + } while (KeepTrying) { @@ -4305,6 +4313,8 @@ ScsiPortDpcForIsr(IN PKDPC Dpc, /* We need to acquire spinlock */ KeAcquireSpinLockAtDpcLevel(&DeviceExtension->SpinLock); + RtlZeroMemory(&InterruptData, sizeof(SCSI_PORT_INTERRUPT_DATA)); + TryAgain: /* Interrupt structure must be snapshotted, and only then analyzed */