Author: janderwald
Date: Mon Jan 23 02:49:40 2012
New Revision: 55088

URL: http://svn.reactos.org/svn/reactos?rev=55088&view=rev
Log:
[USBSTOR]
- Fix bug in usbstor, which did not take the offset into account

Modified:
    branches/usb-bringup-trunk/drivers/usb/usbstor/scsi.c

Modified: branches/usb-bringup-trunk/drivers/usb/usbstor/scsi.c
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/usbstor/scsi.c?rev=55088&r1=55087&r2=55088&view=diff
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbstor/scsi.c [iso-8859-1] 
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbstor/scsi.c [iso-8859-1] Mon Jan 
23 02:49:40 2012
@@ -576,7 +576,7 @@
     if (Context->TransferDataLength)
     {
         //
-        // check if the original request already does not have an mdl 
associated
+        // check if the original request already does have an mdl associated
         //
         if (OriginalRequest)
         {
@@ -589,7 +589,25 @@
                 if (CommandLength == UFI_READ_WRITE_CMD_LEN)
                 {
                     MdlVirtualAddress = 
MmGetMdlVirtualAddress(OriginalRequest->MdlAddress);
-                    ASSERT(MdlVirtualAddress == Context->TransferData);
+                    if (MdlVirtualAddress != Context->TransferData)
+                                       {
+                        //
+                        // lets build an mdl
+                        //
+                                               Context->TransferBufferMDL = 
IoAllocateMdl(Context->TransferData, 
MmGetMdlByteCount(OriginalRequest->MdlAddress), FALSE, FALSE, NULL);
+                        if (!Context->TransferBufferMDL)
+                        {
+                            //
+                            // failed to allocate MDL
+                            //
+                            return STATUS_INSUFFICIENT_RESOURCES;
+                        }
+
+                                               //
+                                               // now build the partial mdl
+                                               //
+                                               
IoBuildPartialMdl(OriginalRequest->MdlAddress, Context->TransferBufferMDL, 
Context->TransferData, Context->TransferDataLength);
+                                       }
                 }
 
                 //


Reply via email to