From 59de50814d09b997f410debf0e5bc140a41dc921 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Thu, 2 Feb 2012 19:37:38 +0000 Subject: [PATCH] [USBSTOR] - Add sanity checks - Check if device needs CDB padding and return error in that case svn path=/branches/usb-bringup-trunk/; revision=55381 --- drivers/usb/usbstor/fdo.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/usb/usbstor/fdo.c b/drivers/usb/usbstor/fdo.c index 9b44e13dbe2..2d7123f14bc 100644 --- a/drivers/usb/usbstor/fdo.c +++ b/drivers/usb/usbstor/fdo.c @@ -193,13 +193,29 @@ USBSTOR_FdoHandleStartDevice( // Check that this device uses bulk transfers and is SCSI // InterfaceDesc = (PUSB_INTERFACE_DESCRIPTOR)((ULONG_PTR)DeviceExtension->ConfigurationDescriptor + sizeof(USB_CONFIGURATION_DESCRIPTOR)); + + // + // sanity check + // + ASSERT(InterfaceDesc->bDescriptorType == USB_INTERFACE_DESCRIPTOR_TYPE); + ASSERT(InterfaceDesc->bLength == sizeof(USB_INTERFACE_DESCRIPTOR)); + DPRINT1("bInterfaceSubClass %x\n", InterfaceDesc->bInterfaceSubClass); if (InterfaceDesc->bInterfaceProtocol != 0x50) { DPRINT1("USB Device is not a bulk only device and is not currently supported\n"); return STATUS_NOT_SUPPORTED; } - + + if (InterfaceDesc->bInterfaceSubClass != 0x06) + { + // + // FIXME: need to pad CDBs to 12 byte + // mode select commands must be translated from 1AH / 15h to 5AH / 55h + // + DPRINT1("[USBSTOR] Error: need to pad CDBs\n"); + return STATUS_NOT_IMPLEMENTED; + } // // now select an interface -- 2.17.1