Author: hbelusca
Date: Fri May 19 16:14:10 2017
New Revision: 74597
URL:
http://svn.reactos.org/svn/reactos?rev=74597&view=rev
Log:
[SCSIPORT]: Fixes:
- In SpiScanAdapter(), after an SCSI INQUIRY command has succeeded and we are setting up a
LUN extension structure,
cache in its InquiryData member the inquiry data retrieved from the INQUIRY command
(alternatively we might just cache
a pointer to a valid "LunInfo" since the latter are also cached elsewhere).
- This allows SpiBuildDeviceMap(), which is called just after SpiScanAdapter(), to
correctly report in the registry SCSI tree
the correct Identifier and DeviceType values for the enumerated logical units.
- Use ExFreePoolWithTag in SpiScanAdapter().
Modified:
trunk/reactos/drivers/storage/scsiport/scsiport.c
Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
==============================================================================
--- trunk/reactos/drivers/storage/scsiport/scsiport.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/storage/scsiport/scsiport.c [iso-8859-1] Fri May 19 16:14:10
2017
@@ -101,7 +101,7 @@
IN OUT PSCSI_LUN_INFO LunInfo);
static VOID
-SpiScanAdapter (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension);
+SpiScanAdapter(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension);
static NTSTATUS
SpiGetInquiryData (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
@@ -3911,6 +3911,14 @@
DPRINT("SpiScanAdapter(): Found device of type %d at bus %d tid
%d lun %d\n",
InquiryData->DeviceType, Bus, Target, Lun);
+ /*
+ * Cache the inquiry data into the LUN extension (or alternatively
+ * we could save a pointer to LunInfo within the LunExtension?)
+ */
+ RtlCopyMemory(&LunExtension->InquiryData,
+ InquiryData,
+ INQUIRYDATABUFFERSIZE);
+
/* Add this info to the linked list */
LunInfo->Next = NULL;
if (LastLunInfo)
@@ -3956,10 +3964,10 @@
/* Free allocated buffers */
if (LunExtension)
- ExFreePool(LunExtension);
+ ExFreePoolWithTag(LunExtension, TAG_SCSIPORT);
if (LunInfo)
- ExFreePool(LunInfo);
+ ExFreePoolWithTag(LunInfo, TAG_SCSIPORT);
/* Sum what we found */
BusScanInfo->LogicalUnitsCount += (UCHAR)DevicesFound;