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;


Reply via email to