mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
[USBSTOR]
- In USBSTOR_GetMaxLUN, correctly handle devices that do not support this request. Patch by Vadim Galyant. CORE-10515 #resolve svn path=/trunk/; revision=71128
This commit is contained in:
parent
ce2ec6562e
commit
372ab04bc4
1 changed files with 23 additions and 8 deletions
|
@ -23,7 +23,7 @@ NTSTATUS
|
|||
NTAPI
|
||||
USBSTOR_SyncForwardIrpCompletionRoutine(
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp,
|
||||
PIRP Irp,
|
||||
PVOID Context)
|
||||
{
|
||||
if (Irp->PendingReturned)
|
||||
|
@ -362,19 +362,34 @@ USBSTOR_GetMaxLUN(
|
|||
|
||||
DPRINT("MaxLUN: %x\n", *Buffer);
|
||||
|
||||
if (*Buffer > 0xF)
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
//
|
||||
// invalid response documented in usb mass storage specification
|
||||
//
|
||||
Status = STATUS_DEVICE_DATA_ERROR;
|
||||
if (*Buffer > 0xF)
|
||||
{
|
||||
//
|
||||
// invalid response documented in usb mass storage specification
|
||||
//
|
||||
Status = STATUS_DEVICE_DATA_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// store maxlun
|
||||
//
|
||||
DeviceExtension->MaxLUN = *Buffer;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// store maxlun
|
||||
// "USB Mass Storage Class. Bulk-Only Transport. Revision 1.0"
|
||||
// 3.2 Get Max LUN (class-specific request) :
|
||||
// Devices that do not support multiple LUNs may STALL this command.
|
||||
//
|
||||
DeviceExtension->MaxLUN = *Buffer;
|
||||
USBSTOR_ResetDevice(DeviceExtension->LowerDeviceObject, DeviceExtension);
|
||||
|
||||
DeviceExtension->MaxLUN = 0;
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue