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/scsiport.c?rev=74597&r1=74596&r2=74597&view=diff ============================================================================== --- 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;