public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [Patch V2 0/2] Add Max LUN status/value checks
@ 2017-11-15  1:02 Michael D Kinney
  2017-11-15  1:02 ` [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check Michael D Kinney
  2017-11-15  1:02 ` [Patch V2 2/2] MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value Michael D Kinney
  0 siblings, 2 replies; 12+ messages in thread
From: Michael D Kinney @ 2017-11-15  1:02 UTC (permalink / raw)
  To: edk2-devel; +Cc: Star Zeng, Eric Dong

https://bugzilla.tianocore.org/show_bug.cgi?id=767

Add error check to USB I/O Protocol UsbControlTransfer() for the
number of bytes actually transfered.  If less than requested, then
return EFI_DEVICE_ERROR.

Check Get Max LUN status/value in USB Mass Storage Driver to handle
cases where USB device does not support Get Max LUN command or
returned an invalud Max LUN value.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>

Michael D Kinney (2):
  MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value

 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c             |  8 +++++++-
 MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c | 14 +++++++++++++-
 2 files changed, 20 insertions(+), 2 deletions(-)

-- 
2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15  1:02 [Patch V2 0/2] Add Max LUN status/value checks Michael D Kinney
@ 2017-11-15  1:02 ` Michael D Kinney
  2017-11-15  2:39   ` Zeng, Star
  2017-11-15  1:02 ` [Patch V2 2/2] MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value Michael D Kinney
  1 sibling, 1 reply; 12+ messages in thread
From: Michael D Kinney @ 2017-11-15  1:02 UTC (permalink / raw)
  To: edk2-devel; +Cc: Star Zeng, Eric Dong

https://bugzilla.tianocore.org/show_bug.cgi?id=767

The USB I/O Protocol function ControlTransfer() has a DataLength
parameter that specifies the size of the Data buffer.  The
UsbBusDxe module implements the USB I/O Protocol using the
services of the USB2 Host Controller Protocol.  The DataLength
parameter in the USB2 Host Controller Protocol ControlTransfer()
service is an IN OUT parameter so the number of bytes actually
transferred is returned.  Since the USB I/O Protocol
ControlTransfer() service can not return the number of bytes
actually transferred, the only option if the number of bytes
actually transferred is less than the number of bytes requested
is to return EFI_DEVICE_ERROR.

The change fixes an issue with a USB mass storage device that
responds with 0 bytes to the Get MAX LUN command.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
index 78220222f6..b0ad7938e9 100644
--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
+++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
@@ -2,7 +2,7 @@
 
     Usb Bus Driver Binding and Bus IO Protocol.
 
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License
 which accompanies this distribution.  The full text of the license may be found at
@@ -76,6 +76,7 @@ UsbIoControlTransfer (
   USB_ENDPOINT_DESC       *EpDesc;
   EFI_TPL                 OldTpl;
   EFI_STATUS              Status;
+  UINTN                   RequestedDataLength;
 
   if (UsbStatus == NULL) {
     return EFI_INVALID_PARAMETER;
@@ -86,6 +87,7 @@ UsbIoControlTransfer (
   UsbIf  = USB_INTERFACE_FROM_USBIO (This);
   Dev    = UsbIf->Device;
 
+  RequestedDataLength = DataLength;
   Status = UsbHcControlTransfer (
              Dev->Bus,
              Dev->Address,
@@ -99,6 +101,10 @@ UsbIoControlTransfer (
              &Dev->Translator,
              UsbStatus
              );
+  if (!EFI_ERROR (Status) && DataLength < RequestedDataLength) {
+    Status = EFI_DEVICE_ERROR;
+    goto ON_EXIT;
+  }
 
   if (EFI_ERROR (Status) || (*UsbStatus != EFI_USB_NOERROR)) {
     //
-- 
2.14.2.windows.3



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Patch V2 2/2] MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value
  2017-11-15  1:02 [Patch V2 0/2] Add Max LUN status/value checks Michael D Kinney
  2017-11-15  1:02 ` [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check Michael D Kinney
@ 2017-11-15  1:02 ` Michael D Kinney
  2017-11-15  2:37   ` Zeng, Star
  1 sibling, 1 reply; 12+ messages in thread
From: Michael D Kinney @ 2017-11-15  1:02 UTC (permalink / raw)
  To: edk2-devel; +Cc: Star Zeng, Eric Dong

https://bugzilla.tianocore.org/show_bug.cgi?id=767

If a USB Mass Storage device does not support the Get
Max LUN command, then the USB I/O Protocol ControlTransfer()
service may return an error.  If an error is returned for
this command, then assume that the device does not support
multiple LUNs and return a maximum LUN value of 0.

The USB Mass Storage Class Specification states that a
maximum LUN value larger than 0x0F is invalid.  Add
a check to make sure this maximum LUN value is in this
valid range, and if it is not, then assume that the
device does not support multiple LUNs and return a
maximum LUN value of 0.

This change improves compatibility with USB FLASH drives
that o not support the Get Max LUN command or return
an invalid maximum LUN value.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c
index 4bb7222b89..6afe2ae235 100644
--- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c
+++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c
@@ -2,7 +2,7 @@
   Implementation of the USB mass storage Bulk-Only Transport protocol,
   according to USB Mass Storage Class Bulk-Only Transport, Revision 1.0.
 
-Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License
 which accompanies this distribution.  The full text of the license may be found at
@@ -576,6 +576,18 @@ UsbBotGetMaxLun (
                             1,
                             &Result
                             );
+  if (EFI_ERROR (Status) || *MaxLun > USB_BOT_MAX_LUN) {
+    //
+    // If the Get LUN request returns an error or the MaxLun is larger than
+    // the maximum LUN value (0x0f) supported by the USB Mass Storage Class
+    // Bulk-Only Transport Spec, then set MaxLun to 0.
+    //
+    // This improves compatibility with USB FLASH drives that have a single LUN
+    // and either do not return a max LUN value or return an invalid maximum LUN
+    // value.
+    //
+    *MaxLun = 0;
+  }
 
   return Status;
 }
-- 
2.14.2.windows.3



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Patch V2 2/2] MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value
  2017-11-15  1:02 ` [Patch V2 2/2] MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value Michael D Kinney
@ 2017-11-15  2:37   ` Zeng, Star
  0 siblings, 0 replies; 12+ messages in thread
From: Zeng, Star @ 2017-11-15  2:37 UTC (permalink / raw)
  To: Kinney, Michael D, edk2-devel@lists.01.org; +Cc: Dong, Eric, Zeng, Star

Mike,

With a minor typo "that o not" fixed to "that do not" in the commit log, Reviewed-by: Star Zeng <star.zeng@intel.com>

Thanks,
Star
-----Original Message-----
From: Kinney, Michael D 
Sent: Wednesday, November 15, 2017 9:03 AM
To: edk2-devel@lists.01.org
Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric <eric.dong@intel.com>
Subject: [Patch V2 2/2] MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value

https://bugzilla.tianocore.org/show_bug.cgi?id=767

If a USB Mass Storage device does not support the Get Max LUN command, then the USB I/O Protocol ControlTransfer() service may return an error.  If an error is returned for this command, then assume that the device does not support multiple LUNs and return a maximum LUN value of 0.

The USB Mass Storage Class Specification states that a maximum LUN value larger than 0x0F is invalid.  Add a check to make sure this maximum LUN value is in this valid range, and if it is not, then assume that the device does not support multiple LUNs and return a maximum LUN value of 0.

This change improves compatibility with USB FLASH drives that o not support the Get Max LUN command or return an invalid maximum LUN value.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c
index 4bb7222b89..6afe2ae235 100644
--- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c
+++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c
@@ -2,7 +2,7 @@
   Implementation of the USB mass storage Bulk-Only Transport protocol,
   according to USB Mass Storage Class Bulk-Only Transport, Revision 1.0.
 
-Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials  are licensed and made available under the terms and conditions of the BSD License  which accompanies this distribution.  The full text of the license may be found at @@ -576,6 +576,18 @@ UsbBotGetMaxLun (
                             1,
                             &Result
                             );
+  if (EFI_ERROR (Status) || *MaxLun > USB_BOT_MAX_LUN) {
+    //
+    // If the Get LUN request returns an error or the MaxLun is larger than
+    // the maximum LUN value (0x0f) supported by the USB Mass Storage Class
+    // Bulk-Only Transport Spec, then set MaxLun to 0.
+    //
+    // This improves compatibility with USB FLASH drives that have a single LUN
+    // and either do not return a max LUN value or return an invalid maximum LUN
+    // value.
+    //
+    *MaxLun = 0;
+  }
 
   return Status;
 }
--
2.14.2.windows.3



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15  1:02 ` [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check Michael D Kinney
@ 2017-11-15  2:39   ` Zeng, Star
  2017-11-15  2:46     ` Kinney, Michael D
  0 siblings, 1 reply; 12+ messages in thread
From: Zeng, Star @ 2017-11-15  2:39 UTC (permalink / raw)
  To: Kinney, Michael D, edk2-devel@lists.01.org; +Cc: Dong, Eric, Zeng, Star

Mike,

Do you think it is better or not to also check the Direction is not EfiUsbNoData?

UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer():
If the Direction parameter is EfiUsbNoData, Data is NULL, and DataLength is 0, then no data phase exists for the control transfer.

Thanks,
Star
-----Original Message-----
From: Kinney, Michael D 
Sent: Wednesday, November 15, 2017 9:03 AM
To: edk2-devel@lists.01.org
Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric <eric.dong@intel.com>
Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check

https://bugzilla.tianocore.org/show_bug.cgi?id=767

The USB I/O Protocol function ControlTransfer() has a DataLength parameter that specifies the size of the Data buffer.  The UsbBusDxe module implements the USB I/O Protocol using the services of the USB2 Host Controller Protocol.  The DataLength parameter in the USB2 Host Controller Protocol ControlTransfer() service is an IN OUT parameter so the number of bytes actually transferred is returned.  Since the USB I/O Protocol
ControlTransfer() service can not return the number of bytes actually transferred, the only option if the number of bytes actually transferred is less than the number of bytes requested is to return EFI_DEVICE_ERROR.

The change fixes an issue with a USB mass storage device that responds with 0 bytes to the Get MAX LUN command.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
index 78220222f6..b0ad7938e9 100644
--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
+++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
@@ -2,7 +2,7 @@
 
     Usb Bus Driver Binding and Bus IO Protocol.
 
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials  are licensed and made available under the terms and conditions of the BSD License  which accompanies this distribution.  The full text of the license may be found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
   USB_ENDPOINT_DESC       *EpDesc;
   EFI_TPL                 OldTpl;
   EFI_STATUS              Status;
+  UINTN                   RequestedDataLength;
 
   if (UsbStatus == NULL) {
     return EFI_INVALID_PARAMETER;
@@ -86,6 +87,7 @@ UsbIoControlTransfer (
   UsbIf  = USB_INTERFACE_FROM_USBIO (This);
   Dev    = UsbIf->Device;
 
+  RequestedDataLength = DataLength;
   Status = UsbHcControlTransfer (
              Dev->Bus,
              Dev->Address,
@@ -99,6 +101,10 @@ UsbIoControlTransfer (
              &Dev->Translator,
              UsbStatus
              );
+  if (!EFI_ERROR (Status) && DataLength < RequestedDataLength) {
+    Status = EFI_DEVICE_ERROR;
+    goto ON_EXIT;
+  }
 
   if (EFI_ERROR (Status) || (*UsbStatus != EFI_USB_NOERROR)) {
     //
--
2.14.2.windows.3



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15  2:39   ` Zeng, Star
@ 2017-11-15  2:46     ` Kinney, Michael D
  2017-11-15  2:59       ` Zeng, Star
  0 siblings, 1 reply; 12+ messages in thread
From: Kinney, Michael D @ 2017-11-15  2:46 UTC (permalink / raw)
  To: Zeng, Star, edk2-devel@lists.01.org, Kinney, Michael D; +Cc: Dong, Eric

Star,

For that case both DataLength and RequestedDataLength
will be 0 and the new path will not be taken.

Are you concerned that the USB HC Protocol could return
a non zero DataLength for the EfiUsbNoData case?  Even
if it does, the new path can never be taken because 0 is
less than all UINTN values.

Mike

> -----Original Message-----
> From: Zeng, Star
> Sent: Tuesday, November 14, 2017 6:40 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>;
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Mike,
> 
> Do you think it is better or not to also check the
> Direction is not EfiUsbNoData?
> 
> UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer():
> If the Direction parameter is EfiUsbNoData, Data is
> NULL, and DataLength is 0, then no data phase exists
> for the control transfer.
> 
> Thanks,
> Star
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Wednesday, November 15, 2017 9:03 AM
> To: edk2-devel@lists.01.org
> Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric
> <eric.dong@intel.com>
> Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> https://bugzilla.tianocore.org/show_bug.cgi?id=767
> 
> The USB I/O Protocol function ControlTransfer() has a
> DataLength parameter that specifies the size of the
> Data buffer.  The UsbBusDxe module implements the USB
> I/O Protocol using the services of the USB2 Host
> Controller Protocol.  The DataLength parameter in the
> USB2 Host Controller Protocol ControlTransfer() service
> is an IN OUT parameter so the number of bytes actually
> transferred is returned.  Since the USB I/O Protocol
> ControlTransfer() service can not return the number of
> bytes actually transferred, the only option if the
> number of bytes actually transferred is less than the
> number of bytes requested is to return
> EFI_DEVICE_ERROR.
> 
> The change fixes an issue with a USB mass storage
> device that responds with 0 bytes to the Get MAX LUN
> command.
> 
> Cc: Star Zeng <star.zeng@intel.com>
> Cc: Eric Dong <eric.dong@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Michael D Kinney
> <michael.d.kinney@intel.com>
> ---
>  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> index 78220222f6..b0ad7938e9 100644
> --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> @@ -2,7 +2,7 @@
> 
>      Usb Bus Driver Binding and Bus IO Protocol.
> 
> -Copyright (c) 2004 - 2016, Intel Corporation. All
> rights reserved.<BR>
> +Copyright (c) 2004 - 2017, Intel Corporation. All
> rights reserved.<BR>
>  This program and the accompanying materials  are
> licensed and made available under the terms and
> conditions of the BSD License  which accompanies this
> distribution.  The full text of the license may be
> found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
>    USB_ENDPOINT_DESC       *EpDesc;
>    EFI_TPL                 OldTpl;
>    EFI_STATUS              Status;
> +  UINTN                   RequestedDataLength;
> 
>    if (UsbStatus == NULL) {
>      return EFI_INVALID_PARAMETER;
> @@ -86,6 +87,7 @@ UsbIoControlTransfer (
>    UsbIf  = USB_INTERFACE_FROM_USBIO (This);
>    Dev    = UsbIf->Device;
> 
> +  RequestedDataLength = DataLength;
>    Status = UsbHcControlTransfer (
>               Dev->Bus,
>               Dev->Address,
> @@ -99,6 +101,10 @@ UsbIoControlTransfer (
>               &Dev->Translator,
>               UsbStatus
>               );
> +  if (!EFI_ERROR (Status) && DataLength <
> RequestedDataLength) {
> +    Status = EFI_DEVICE_ERROR;
> +    goto ON_EXIT;
> +  }
> 
>    if (EFI_ERROR (Status) || (*UsbStatus !=
> EFI_USB_NOERROR)) {
>      //
> --
> 2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15  2:46     ` Kinney, Michael D
@ 2017-11-15  2:59       ` Zeng, Star
  2017-11-15  4:00         ` Kinney, Michael D
  0 siblings, 1 reply; 12+ messages in thread
From: Zeng, Star @ 2017-11-15  2:59 UTC (permalink / raw)
  To: Kinney, Michael D, edk2-devel@lists.01.org; +Cc: Dong, Eric, Zeng, Star

Mike,

I do not insist on the check that the Direction is not EfiUsbNoData, and I know the functionality should have no improvement with the check.
So, you can have my Reviewed-by: Star Zeng <star.zeng@intel.com>.

I raised the question just for consideration from literally, as according to the spec, the code could not touch DataLength at all when Direction is EfiUsbNoData.

You can decide to have / have not the check when pushing. :)


Thanks,
Star
-----Original Message-----
From: Kinney, Michael D 
Sent: Wednesday, November 15, 2017 10:46 AM
To: Zeng, Star <star.zeng@intel.com>; edk2-devel@lists.01.org; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Dong, Eric <eric.dong@intel.com>
Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check

Star,

For that case both DataLength and RequestedDataLength will be 0 and the new path will not be taken.

Are you concerned that the USB HC Protocol could return a non zero DataLength for the EfiUsbNoData case?  Even if it does, the new path can never be taken because 0 is less than all UINTN values.

Mike

> -----Original Message-----
> From: Zeng, Star
> Sent: Tuesday, November 14, 2017 6:40 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star <star.zeng@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Mike,
> 
> Do you think it is better or not to also check the Direction is not 
> EfiUsbNoData?
> 
> UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer():
> If the Direction parameter is EfiUsbNoData, Data is NULL, and 
> DataLength is 0, then no data phase exists for the control transfer.
> 
> Thanks,
> Star
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Wednesday, November 15, 2017 9:03 AM
> To: edk2-devel@lists.01.org
> Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric <eric.dong@intel.com>
> Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> https://bugzilla.tianocore.org/show_bug.cgi?id=767
> 
> The USB I/O Protocol function ControlTransfer() has a DataLength 
> parameter that specifies the size of the Data buffer.  The UsbBusDxe 
> module implements the USB I/O Protocol using the services of the USB2 
> Host Controller Protocol.  The DataLength parameter in the
> USB2 Host Controller Protocol ControlTransfer() service is an IN OUT 
> parameter so the number of bytes actually transferred is returned.  
> Since the USB I/O Protocol
> ControlTransfer() service can not return the number of bytes actually 
> transferred, the only option if the number of bytes actually 
> transferred is less than the number of bytes requested is to return 
> EFI_DEVICE_ERROR.
> 
> The change fixes an issue with a USB mass storage device that responds 
> with 0 bytes to the Get MAX LUN command.
> 
> Cc: Star Zeng <star.zeng@intel.com>
> Cc: Eric Dong <eric.dong@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Michael D Kinney
> <michael.d.kinney@intel.com>
> ---
>  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> index 78220222f6..b0ad7938e9 100644
> --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> @@ -2,7 +2,7 @@
> 
>      Usb Bus Driver Binding and Bus IO Protocol.
> 
> -Copyright (c) 2004 - 2016, Intel Corporation. All rights 
> reserved.<BR>
> +Copyright (c) 2004 - 2017, Intel Corporation. All
> rights reserved.<BR>
>  This program and the accompanying materials  are licensed and made 
> available under the terms and conditions of the BSD License  which 
> accompanies this distribution.  The full text of the license may be 
> found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
>    USB_ENDPOINT_DESC       *EpDesc;
>    EFI_TPL                 OldTpl;
>    EFI_STATUS              Status;
> +  UINTN                   RequestedDataLength;
> 
>    if (UsbStatus == NULL) {
>      return EFI_INVALID_PARAMETER;
> @@ -86,6 +87,7 @@ UsbIoControlTransfer (
>    UsbIf  = USB_INTERFACE_FROM_USBIO (This);
>    Dev    = UsbIf->Device;
> 
> +  RequestedDataLength = DataLength;
>    Status = UsbHcControlTransfer (
>               Dev->Bus,
>               Dev->Address,
> @@ -99,6 +101,10 @@ UsbIoControlTransfer (
>               &Dev->Translator,
>               UsbStatus
>               );
> +  if (!EFI_ERROR (Status) && DataLength <
> RequestedDataLength) {
> +    Status = EFI_DEVICE_ERROR;
> +    goto ON_EXIT;
> +  }
> 
>    if (EFI_ERROR (Status) || (*UsbStatus !=
> EFI_USB_NOERROR)) {
>      //
> --
> 2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15  2:59       ` Zeng, Star
@ 2017-11-15  4:00         ` Kinney, Michael D
  2017-11-15  4:22           ` Zeng, Star
  0 siblings, 1 reply; 12+ messages in thread
From: Kinney, Michael D @ 2017-11-15  4:00 UTC (permalink / raw)
  To: Zeng, Star, edk2-devel@lists.01.org, Kinney, Michael D; +Cc: Dong, Eric

Star,

I am curious.  Which spec statement are you referring to?

Mike

> -----Original Message-----
> From: Zeng, Star
> Sent: Tuesday, November 14, 2017 6:59 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>;
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Mike,
> 
> I do not insist on the check that the Direction is not
> EfiUsbNoData, and I know the functionality should have
> no improvement with the check.
> So, you can have my Reviewed-by: Star Zeng
> <star.zeng@intel.com>.
> 
> I raised the question just for consideration from
> literally, as according to the spec, the code could not
> touch DataLength at all when Direction is EfiUsbNoData.
> 
> You can decide to have / have not the check when
> pushing. :)
> 
> 
> Thanks,
> Star
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Wednesday, November 15, 2017 10:46 AM
> To: Zeng, Star <star.zeng@intel.com>; edk2-
> devel@lists.01.org; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Dong, Eric <eric.dong@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Star,
> 
> For that case both DataLength and RequestedDataLength
> will be 0 and the new path will not be taken.
> 
> Are you concerned that the USB HC Protocol could return
> a non zero DataLength for the EfiUsbNoData case?  Even
> if it does, the new path can never be taken because 0
> is less than all UINTN values.
> 
> Mike
> 
> > -----Original Message-----
> > From: Zeng, Star
> > Sent: Tuesday, November 14, 2017 6:40 PM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > edk2-devel@lists.01.org
> > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Mike,
> >
> > Do you think it is better or not to also check the
> Direction is not
> > EfiUsbNoData?
> >
> > UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer():
> > If the Direction parameter is EfiUsbNoData, Data is
> NULL, and
> > DataLength is 0, then no data phase exists for the
> control transfer.
> >
> > Thanks,
> > Star
> > -----Original Message-----
> > From: Kinney, Michael D
> > Sent: Wednesday, November 15, 2017 9:03 AM
> > To: edk2-devel@lists.01.org
> > Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric
> <eric.dong@intel.com>
> > Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> > UsbControlTransfer() error check
> >
> > https://bugzilla.tianocore.org/show_bug.cgi?id=767
> >
> > The USB I/O Protocol function ControlTransfer() has a
> DataLength
> > parameter that specifies the size of the Data buffer.
> The UsbBusDxe
> > module implements the USB I/O Protocol using the
> services of the USB2
> > Host Controller Protocol.  The DataLength parameter
> in the
> > USB2 Host Controller Protocol ControlTransfer()
> service is an IN OUT
> > parameter so the number of bytes actually transferred
> is returned.
> > Since the USB I/O Protocol
> > ControlTransfer() service can not return the number
> of bytes actually
> > transferred, the only option if the number of bytes
> actually
> > transferred is less than the number of bytes
> requested is to return
> > EFI_DEVICE_ERROR.
> >
> > The change fixes an issue with a USB mass storage
> device that responds
> > with 0 bytes to the Get MAX LUN command.
> >
> > Cc: Star Zeng <star.zeng@intel.com>
> > Cc: Eric Dong <eric.dong@intel.com>
> > Contributed-under: TianoCore Contribution Agreement
> 1.1
> > Signed-off-by: Michael D Kinney
> > <michael.d.kinney@intel.com>
> > ---
> >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > index 78220222f6..b0ad7938e9 100644
> > --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > @@ -2,7 +2,7 @@
> >
> >      Usb Bus Driver Binding and Bus IO Protocol.
> >
> > -Copyright (c) 2004 - 2016, Intel Corporation. All
> rights
> > reserved.<BR>
> > +Copyright (c) 2004 - 2017, Intel Corporation. All
> > rights reserved.<BR>
> >  This program and the accompanying materials  are
> licensed and made
> > available under the terms and conditions of the BSD
> License  which
> > accompanies this distribution.  The full text of the
> license may be
> > found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
> >    USB_ENDPOINT_DESC       *EpDesc;
> >    EFI_TPL                 OldTpl;
> >    EFI_STATUS              Status;
> > +  UINTN                   RequestedDataLength;
> >
> >    if (UsbStatus == NULL) {
> >      return EFI_INVALID_PARAMETER;
> > @@ -86,6 +87,7 @@ UsbIoControlTransfer (
> >    UsbIf  = USB_INTERFACE_FROM_USBIO (This);
> >    Dev    = UsbIf->Device;
> >
> > +  RequestedDataLength = DataLength;
> >    Status = UsbHcControlTransfer (
> >               Dev->Bus,
> >               Dev->Address,
> > @@ -99,6 +101,10 @@ UsbIoControlTransfer (
> >               &Dev->Translator,
> >               UsbStatus
> >               );
> > +  if (!EFI_ERROR (Status) && DataLength <
> > RequestedDataLength) {
> > +    Status = EFI_DEVICE_ERROR;
> > +    goto ON_EXIT;
> > +  }
> >
> >    if (EFI_ERROR (Status) || (*UsbStatus !=
> > EFI_USB_NOERROR)) {
> >      //
> > --
> > 2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15  4:00         ` Kinney, Michael D
@ 2017-11-15  4:22           ` Zeng, Star
  2017-11-15 16:44             ` Kinney, Michael D
  0 siblings, 1 reply; 12+ messages in thread
From: Zeng, Star @ 2017-11-15  4:22 UTC (permalink / raw)
  To: Kinney, Michael D, edk2-devel@lists.01.org; +Cc: Dong, Eric, Zeng, Star

Mike,

UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer(), in the description.

Thanks,
Star
-----Original Message-----
From: Kinney, Michael D 
Sent: Wednesday, November 15, 2017 12:00 PM
To: Zeng, Star <star.zeng@intel.com>; edk2-devel@lists.01.org; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Dong, Eric <eric.dong@intel.com>
Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check

Star,

I am curious.  Which spec statement are you referring to?

Mike

> -----Original Message-----
> From: Zeng, Star
> Sent: Tuesday, November 14, 2017 6:59 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star <star.zeng@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Mike,
> 
> I do not insist on the check that the Direction is not EfiUsbNoData, 
> and I know the functionality should have no improvement with the 
> check.
> So, you can have my Reviewed-by: Star Zeng <star.zeng@intel.com>.
> 
> I raised the question just for consideration from literally, as 
> according to the spec, the code could not touch DataLength at all when 
> Direction is EfiUsbNoData.
> 
> You can decide to have / have not the check when pushing. :)
> 
> 
> Thanks,
> Star
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Wednesday, November 15, 2017 10:46 AM
> To: Zeng, Star <star.zeng@intel.com>; edk2- devel@lists.01.org; 
> Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Dong, Eric <eric.dong@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Star,
> 
> For that case both DataLength and RequestedDataLength will be 0 and 
> the new path will not be taken.
> 
> Are you concerned that the USB HC Protocol could return a non zero 
> DataLength for the EfiUsbNoData case?  Even if it does, the new path 
> can never be taken because 0 is less than all UINTN values.
> 
> Mike
> 
> > -----Original Message-----
> > From: Zeng, Star
> > Sent: Tuesday, November 14, 2017 6:40 PM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> > edk2-devel@lists.01.org
> > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Mike,
> >
> > Do you think it is better or not to also check the
> Direction is not
> > EfiUsbNoData?
> >
> > UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer():
> > If the Direction parameter is EfiUsbNoData, Data is
> NULL, and
> > DataLength is 0, then no data phase exists for the
> control transfer.
> >
> > Thanks,
> > Star
> > -----Original Message-----
> > From: Kinney, Michael D
> > Sent: Wednesday, November 15, 2017 9:03 AM
> > To: edk2-devel@lists.01.org
> > Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric
> <eric.dong@intel.com>
> > Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> > UsbControlTransfer() error check
> >
> > https://bugzilla.tianocore.org/show_bug.cgi?id=767
> >
> > The USB I/O Protocol function ControlTransfer() has a
> DataLength
> > parameter that specifies the size of the Data buffer.
> The UsbBusDxe
> > module implements the USB I/O Protocol using the
> services of the USB2
> > Host Controller Protocol.  The DataLength parameter
> in the
> > USB2 Host Controller Protocol ControlTransfer()
> service is an IN OUT
> > parameter so the number of bytes actually transferred
> is returned.
> > Since the USB I/O Protocol
> > ControlTransfer() service can not return the number
> of bytes actually
> > transferred, the only option if the number of bytes
> actually
> > transferred is less than the number of bytes
> requested is to return
> > EFI_DEVICE_ERROR.
> >
> > The change fixes an issue with a USB mass storage
> device that responds
> > with 0 bytes to the Get MAX LUN command.
> >
> > Cc: Star Zeng <star.zeng@intel.com>
> > Cc: Eric Dong <eric.dong@intel.com>
> > Contributed-under: TianoCore Contribution Agreement
> 1.1
> > Signed-off-by: Michael D Kinney
> > <michael.d.kinney@intel.com>
> > ---
> >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > index 78220222f6..b0ad7938e9 100644
> > --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > @@ -2,7 +2,7 @@
> >
> >      Usb Bus Driver Binding and Bus IO Protocol.
> >
> > -Copyright (c) 2004 - 2016, Intel Corporation. All
> rights
> > reserved.<BR>
> > +Copyright (c) 2004 - 2017, Intel Corporation. All
> > rights reserved.<BR>
> >  This program and the accompanying materials  are
> licensed and made
> > available under the terms and conditions of the BSD
> License  which
> > accompanies this distribution.  The full text of the
> license may be
> > found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
> >    USB_ENDPOINT_DESC       *EpDesc;
> >    EFI_TPL                 OldTpl;
> >    EFI_STATUS              Status;
> > +  UINTN                   RequestedDataLength;
> >
> >    if (UsbStatus == NULL) {
> >      return EFI_INVALID_PARAMETER;
> > @@ -86,6 +87,7 @@ UsbIoControlTransfer (
> >    UsbIf  = USB_INTERFACE_FROM_USBIO (This);
> >    Dev    = UsbIf->Device;
> >
> > +  RequestedDataLength = DataLength;
> >    Status = UsbHcControlTransfer (
> >               Dev->Bus,
> >               Dev->Address,
> > @@ -99,6 +101,10 @@ UsbIoControlTransfer (
> >               &Dev->Translator,
> >               UsbStatus
> >               );
> > +  if (!EFI_ERROR (Status) && DataLength <
> > RequestedDataLength) {
> > +    Status = EFI_DEVICE_ERROR;
> > +    goto ON_EXIT;
> > +  }
> >
> >    if (EFI_ERROR (Status) || (*UsbStatus !=
> > EFI_USB_NOERROR)) {
> >      //
> > --
> > 2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15  4:22           ` Zeng, Star
@ 2017-11-15 16:44             ` Kinney, Michael D
  2017-11-16  2:25               ` Zeng, Star
  0 siblings, 1 reply; 12+ messages in thread
From: Kinney, Michael D @ 2017-11-15 16:44 UTC (permalink / raw)
  To: Zeng, Star, edk2-devel@lists.01.org, Kinney, Michael D; +Cc: Dong, Eric

Star,

I have read that section, and I do not see anything
that says the DataLength parameter can not be read.

Mike

> -----Original Message-----
> From: Zeng, Star
> Sent: Tuesday, November 14, 2017 8:23 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>;
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Mike,
> 
> UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer(), in
> the description.
> 
> Thanks,
> Star
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Wednesday, November 15, 2017 12:00 PM
> To: Zeng, Star <star.zeng@intel.com>; edk2-
> devel@lists.01.org; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Dong, Eric <eric.dong@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Star,
> 
> I am curious.  Which spec statement are you referring
> to?
> 
> Mike
> 
> > -----Original Message-----
> > From: Zeng, Star
> > Sent: Tuesday, November 14, 2017 6:59 PM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > edk2-devel@lists.01.org
> > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Mike,
> >
> > I do not insist on the check that the Direction is
> not EfiUsbNoData,
> > and I know the functionality should have no
> improvement with the
> > check.
> > So, you can have my Reviewed-by: Star Zeng
> <star.zeng@intel.com>.
> >
> > I raised the question just for consideration from
> literally, as
> > according to the spec, the code could not touch
> DataLength at all when
> > Direction is EfiUsbNoData.
> >
> > You can decide to have / have not the check when
> pushing. :)
> >
> >
> > Thanks,
> > Star
> > -----Original Message-----
> > From: Kinney, Michael D
> > Sent: Wednesday, November 15, 2017 10:46 AM
> > To: Zeng, Star <star.zeng@intel.com>; edk2-
> devel@lists.01.org;
> > Kinney, Michael D <michael.d.kinney@intel.com>
> > Cc: Dong, Eric <eric.dong@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Star,
> >
> > For that case both DataLength and RequestedDataLength
> will be 0 and
> > the new path will not be taken.
> >
> > Are you concerned that the USB HC Protocol could
> return a non zero
> > DataLength for the EfiUsbNoData case?  Even if it
> does, the new path
> > can never be taken because 0 is less than all UINTN
> values.
> >
> > Mike
> >
> > > -----Original Message-----
> > > From: Zeng, Star
> > > Sent: Tuesday, November 14, 2017 6:40 PM
> > > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > > edk2-devel@lists.01.org
> > > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> > <star.zeng@intel.com>
> > > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> > Add
> > > UsbControlTransfer() error check
> > >
> > > Mike,
> > >
> > > Do you think it is better or not to also check the
> > Direction is not
> > > EfiUsbNoData?
> > >
> > > UEFI spec,
> EFI_USB_IO_PROTOCOL.UsbControlTransfer():
> > > If the Direction parameter is EfiUsbNoData, Data is
> > NULL, and
> > > DataLength is 0, then no data phase exists for the
> > control transfer.
> > >
> > > Thanks,
> > > Star
> > > -----Original Message-----
> > > From: Kinney, Michael D
> > > Sent: Wednesday, November 15, 2017 9:03 AM
> > > To: edk2-devel@lists.01.org
> > > Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric
> > <eric.dong@intel.com>
> > > Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> > > UsbControlTransfer() error check
> > >
> > > https://bugzilla.tianocore.org/show_bug.cgi?id=767
> > >
> > > The USB I/O Protocol function ControlTransfer() has
> a
> > DataLength
> > > parameter that specifies the size of the Data
> buffer.
> > The UsbBusDxe
> > > module implements the USB I/O Protocol using the
> > services of the USB2
> > > Host Controller Protocol.  The DataLength parameter
> > in the
> > > USB2 Host Controller Protocol ControlTransfer()
> > service is an IN OUT
> > > parameter so the number of bytes actually
> transferred
> > is returned.
> > > Since the USB I/O Protocol
> > > ControlTransfer() service can not return the number
> > of bytes actually
> > > transferred, the only option if the number of bytes
> > actually
> > > transferred is less than the number of bytes
> > requested is to return
> > > EFI_DEVICE_ERROR.
> > >
> > > The change fixes an issue with a USB mass storage
> > device that responds
> > > with 0 bytes to the Get MAX LUN command.
> > >
> > > Cc: Star Zeng <star.zeng@intel.com>
> > > Cc: Eric Dong <eric.dong@intel.com>
> > > Contributed-under: TianoCore Contribution Agreement
> > 1.1
> > > Signed-off-by: Michael D Kinney
> > > <michael.d.kinney@intel.com>
> > > ---
> > >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8
> +++++++-
> > >  1 file changed, 7 insertions(+), 1 deletion(-)
> > >
> > > diff --git
> a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > index 78220222f6..b0ad7938e9 100644
> > > --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > @@ -2,7 +2,7 @@
> > >
> > >      Usb Bus Driver Binding and Bus IO Protocol.
> > >
> > > -Copyright (c) 2004 - 2016, Intel Corporation. All
> > rights
> > > reserved.<BR>
> > > +Copyright (c) 2004 - 2017, Intel Corporation. All
> > > rights reserved.<BR>
> > >  This program and the accompanying materials  are
> > licensed and made
> > > available under the terms and conditions of the BSD
> > License  which
> > > accompanies this distribution.  The full text of
> the
> > license may be
> > > found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
> > >    USB_ENDPOINT_DESC       *EpDesc;
> > >    EFI_TPL                 OldTpl;
> > >    EFI_STATUS              Status;
> > > +  UINTN                   RequestedDataLength;
> > >
> > >    if (UsbStatus == NULL) {
> > >      return EFI_INVALID_PARAMETER;
> > > @@ -86,6 +87,7 @@ UsbIoControlTransfer (
> > >    UsbIf  = USB_INTERFACE_FROM_USBIO (This);
> > >    Dev    = UsbIf->Device;
> > >
> > > +  RequestedDataLength = DataLength;
> > >    Status = UsbHcControlTransfer (
> > >               Dev->Bus,
> > >               Dev->Address,
> > > @@ -99,6 +101,10 @@ UsbIoControlTransfer (
> > >               &Dev->Translator,
> > >               UsbStatus
> > >               );
> > > +  if (!EFI_ERROR (Status) && DataLength <
> > > RequestedDataLength) {
> > > +    Status = EFI_DEVICE_ERROR;
> > > +    goto ON_EXIT;
> > > +  }
> > >
> > >    if (EFI_ERROR (Status) || (*UsbStatus !=
> > > EFI_USB_NOERROR)) {
> > >      //
> > > --
> > > 2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-15 16:44             ` Kinney, Michael D
@ 2017-11-16  2:25               ` Zeng, Star
  2017-11-16  3:31                 ` Kinney, Michael D
  0 siblings, 1 reply; 12+ messages in thread
From: Zeng, Star @ 2017-11-16  2:25 UTC (permalink / raw)
  To: Kinney, Michael D, edk2-devel@lists.01.org; +Cc: Dong, Eric, Zeng, Star

Mike,

Yes, the DataLength could be read. And Data/DataLength is optional when Direction is EfiUsbNoData per my understanding.

  IN  OUT VOID                *Data,      OPTIONAL
  IN  UINTN                   DataLength, OPTIONAL


Thanks,
Star
-----Original Message-----
From: Kinney, Michael D 
Sent: Thursday, November 16, 2017 12:44 AM
To: Zeng, Star <star.zeng@intel.com>; edk2-devel@lists.01.org; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Dong, Eric <eric.dong@intel.com>
Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check

Star,

I have read that section, and I do not see anything that says the DataLength parameter can not be read.

Mike

> -----Original Message-----
> From: Zeng, Star
> Sent: Tuesday, November 14, 2017 8:23 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star <star.zeng@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Mike,
> 
> UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer(), in the 
> description.
> 
> Thanks,
> Star
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Wednesday, November 15, 2017 12:00 PM
> To: Zeng, Star <star.zeng@intel.com>; edk2- devel@lists.01.org; 
> Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Dong, Eric <eric.dong@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Star,
> 
> I am curious.  Which spec statement are you referring to?
> 
> Mike
> 
> > -----Original Message-----
> > From: Zeng, Star
> > Sent: Tuesday, November 14, 2017 6:59 PM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> > edk2-devel@lists.01.org
> > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Mike,
> >
> > I do not insist on the check that the Direction is
> not EfiUsbNoData,
> > and I know the functionality should have no
> improvement with the
> > check.
> > So, you can have my Reviewed-by: Star Zeng
> <star.zeng@intel.com>.
> >
> > I raised the question just for consideration from
> literally, as
> > according to the spec, the code could not touch
> DataLength at all when
> > Direction is EfiUsbNoData.
> >
> > You can decide to have / have not the check when
> pushing. :)
> >
> >
> > Thanks,
> > Star
> > -----Original Message-----
> > From: Kinney, Michael D
> > Sent: Wednesday, November 15, 2017 10:46 AM
> > To: Zeng, Star <star.zeng@intel.com>; edk2-
> devel@lists.01.org;
> > Kinney, Michael D <michael.d.kinney@intel.com>
> > Cc: Dong, Eric <eric.dong@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Star,
> >
> > For that case both DataLength and RequestedDataLength
> will be 0 and
> > the new path will not be taken.
> >
> > Are you concerned that the USB HC Protocol could
> return a non zero
> > DataLength for the EfiUsbNoData case?  Even if it
> does, the new path
> > can never be taken because 0 is less than all UINTN
> values.
> >
> > Mike
> >
> > > -----Original Message-----
> > > From: Zeng, Star
> > > Sent: Tuesday, November 14, 2017 6:40 PM
> > > To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> > > edk2-devel@lists.01.org
> > > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> > <star.zeng@intel.com>
> > > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> > Add
> > > UsbControlTransfer() error check
> > >
> > > Mike,
> > >
> > > Do you think it is better or not to also check the
> > Direction is not
> > > EfiUsbNoData?
> > >
> > > UEFI spec,
> EFI_USB_IO_PROTOCOL.UsbControlTransfer():
> > > If the Direction parameter is EfiUsbNoData, Data is
> > NULL, and
> > > DataLength is 0, then no data phase exists for the
> > control transfer.
> > >
> > > Thanks,
> > > Star
> > > -----Original Message-----
> > > From: Kinney, Michael D
> > > Sent: Wednesday, November 15, 2017 9:03 AM
> > > To: edk2-devel@lists.01.org
> > > Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric
> > <eric.dong@intel.com>
> > > Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> > > UsbControlTransfer() error check
> > >
> > > https://bugzilla.tianocore.org/show_bug.cgi?id=767
> > >
> > > The USB I/O Protocol function ControlTransfer() has
> a
> > DataLength
> > > parameter that specifies the size of the Data
> buffer.
> > The UsbBusDxe
> > > module implements the USB I/O Protocol using the
> > services of the USB2
> > > Host Controller Protocol.  The DataLength parameter
> > in the
> > > USB2 Host Controller Protocol ControlTransfer()
> > service is an IN OUT
> > > parameter so the number of bytes actually
> transferred
> > is returned.
> > > Since the USB I/O Protocol
> > > ControlTransfer() service can not return the number
> > of bytes actually
> > > transferred, the only option if the number of bytes
> > actually
> > > transferred is less than the number of bytes
> > requested is to return
> > > EFI_DEVICE_ERROR.
> > >
> > > The change fixes an issue with a USB mass storage
> > device that responds
> > > with 0 bytes to the Get MAX LUN command.
> > >
> > > Cc: Star Zeng <star.zeng@intel.com>
> > > Cc: Eric Dong <eric.dong@intel.com>
> > > Contributed-under: TianoCore Contribution Agreement
> > 1.1
> > > Signed-off-by: Michael D Kinney
> > > <michael.d.kinney@intel.com>
> > > ---
> > >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8
> +++++++-
> > >  1 file changed, 7 insertions(+), 1 deletion(-)
> > >
> > > diff --git
> a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > index 78220222f6..b0ad7938e9 100644
> > > --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > @@ -2,7 +2,7 @@
> > >
> > >      Usb Bus Driver Binding and Bus IO Protocol.
> > >
> > > -Copyright (c) 2004 - 2016, Intel Corporation. All
> > rights
> > > reserved.<BR>
> > > +Copyright (c) 2004 - 2017, Intel Corporation. All
> > > rights reserved.<BR>
> > >  This program and the accompanying materials  are
> > licensed and made
> > > available under the terms and conditions of the BSD
> > License  which
> > > accompanies this distribution.  The full text of
> the
> > license may be
> > > found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
> > >    USB_ENDPOINT_DESC       *EpDesc;
> > >    EFI_TPL                 OldTpl;
> > >    EFI_STATUS              Status;
> > > +  UINTN                   RequestedDataLength;
> > >
> > >    if (UsbStatus == NULL) {
> > >      return EFI_INVALID_PARAMETER; @@ -86,6 +87,7 @@ 
> > > UsbIoControlTransfer (
> > >    UsbIf  = USB_INTERFACE_FROM_USBIO (This);
> > >    Dev    = UsbIf->Device;
> > >
> > > +  RequestedDataLength = DataLength;
> > >    Status = UsbHcControlTransfer (
> > >               Dev->Bus,
> > >               Dev->Address,
> > > @@ -99,6 +101,10 @@ UsbIoControlTransfer (
> > >               &Dev->Translator,
> > >               UsbStatus
> > >               );
> > > +  if (!EFI_ERROR (Status) && DataLength <
> > > RequestedDataLength) {
> > > +    Status = EFI_DEVICE_ERROR;
> > > +    goto ON_EXIT;
> > > +  }
> > >
> > >    if (EFI_ERROR (Status) || (*UsbStatus !=
> > > EFI_USB_NOERROR)) {
> > >      //
> > > --
> > > 2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check
  2017-11-16  2:25               ` Zeng, Star
@ 2017-11-16  3:31                 ` Kinney, Michael D
  0 siblings, 0 replies; 12+ messages in thread
From: Kinney, Michael D @ 2017-11-16  3:31 UTC (permalink / raw)
  To: Zeng, Star, edk2-devel@lists.01.org, Kinney, Michael D; +Cc: Dong, Eric

Star,

I agree they are optional.  The description says
DataLength should be 0 and Data should be NULL for
the EfiUsbNoData case.  That is why I did not think
Direction needed to be evaluated if DataLength must
be 0 in this case.

In fact, the Host Controller implementations return
an error if this is not the case:

  if ((TransferDirection == EfiUsbNoData) &&
      ((Data != NULL) || (*DataLength != 0))) {
    return EFI_INVALID_PARAMETER;
  }

So I think the logic in the current patch is safe.

However, since there are questions on this topic,
I agree I can update the logic to only check for
short data if Direction is not EfiUsbNoData.  That
should help reduce questions in future reviews of
this function.  I will also add more comments.

Thanks for the feedback.

Mike
 
> -----Original Message-----
> From: Zeng, Star
> Sent: Wednesday, November 15, 2017 6:26 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>;
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Mike,
> 
> Yes, the DataLength could be read. And Data/DataLength
> is optional when Direction is EfiUsbNoData per my
> understanding.
> 
>   IN  OUT VOID                *Data,      OPTIONAL
>   IN  UINTN                   DataLength, OPTIONAL
> 
> 
> Thanks,
> Star
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Thursday, November 16, 2017 12:44 AM
> To: Zeng, Star <star.zeng@intel.com>; edk2-
> devel@lists.01.org; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Dong, Eric <eric.dong@intel.com>
> Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add
> UsbControlTransfer() error check
> 
> Star,
> 
> I have read that section, and I do not see anything
> that says the DataLength parameter can not be read.
> 
> Mike
> 
> > -----Original Message-----
> > From: Zeng, Star
> > Sent: Tuesday, November 14, 2017 8:23 PM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > edk2-devel@lists.01.org
> > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Mike,
> >
> > UEFI spec, EFI_USB_IO_PROTOCOL.UsbControlTransfer(),
> in the
> > description.
> >
> > Thanks,
> > Star
> > -----Original Message-----
> > From: Kinney, Michael D
> > Sent: Wednesday, November 15, 2017 12:00 PM
> > To: Zeng, Star <star.zeng@intel.com>; edk2-
> devel@lists.01.org;
> > Kinney, Michael D <michael.d.kinney@intel.com>
> > Cc: Dong, Eric <eric.dong@intel.com>
> > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > UsbControlTransfer() error check
> >
> > Star,
> >
> > I am curious.  Which spec statement are you referring
> to?
> >
> > Mike
> >
> > > -----Original Message-----
> > > From: Zeng, Star
> > > Sent: Tuesday, November 14, 2017 6:59 PM
> > > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > > edk2-devel@lists.01.org
> > > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> > <star.zeng@intel.com>
> > > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> > Add
> > > UsbControlTransfer() error check
> > >
> > > Mike,
> > >
> > > I do not insist on the check that the Direction is
> > not EfiUsbNoData,
> > > and I know the functionality should have no
> > improvement with the
> > > check.
> > > So, you can have my Reviewed-by: Star Zeng
> > <star.zeng@intel.com>.
> > >
> > > I raised the question just for consideration from
> > literally, as
> > > according to the spec, the code could not touch
> > DataLength at all when
> > > Direction is EfiUsbNoData.
> > >
> > > You can decide to have / have not the check when
> > pushing. :)
> > >
> > >
> > > Thanks,
> > > Star
> > > -----Original Message-----
> > > From: Kinney, Michael D
> > > Sent: Wednesday, November 15, 2017 10:46 AM
> > > To: Zeng, Star <star.zeng@intel.com>; edk2-
> > devel@lists.01.org;
> > > Kinney, Michael D <michael.d.kinney@intel.com>
> > > Cc: Dong, Eric <eric.dong@intel.com>
> > > Subject: RE: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> > Add
> > > UsbControlTransfer() error check
> > >
> > > Star,
> > >
> > > For that case both DataLength and
> RequestedDataLength
> > will be 0 and
> > > the new path will not be taken.
> > >
> > > Are you concerned that the USB HC Protocol could
> > return a non zero
> > > DataLength for the EfiUsbNoData case?  Even if it
> > does, the new path
> > > can never be taken because 0 is less than all UINTN
> > values.
> > >
> > > Mike
> > >
> > > > -----Original Message-----
> > > > From: Zeng, Star
> > > > Sent: Tuesday, November 14, 2017 6:40 PM
> > > > To: Kinney, Michael D
> <michael.d.kinney@intel.com>;
> > > > edk2-devel@lists.01.org
> > > > Cc: Dong, Eric <eric.dong@intel.com>; Zeng, Star
> > > <star.zeng@intel.com>
> > > > Subject: RE: [Patch V2 1/2]
> MdeModulePkg/UsbBusDxe:
> > > Add
> > > > UsbControlTransfer() error check
> > > >
> > > > Mike,
> > > >
> > > > Do you think it is better or not to also check
> the
> > > Direction is not
> > > > EfiUsbNoData?
> > > >
> > > > UEFI spec,
> > EFI_USB_IO_PROTOCOL.UsbControlTransfer():
> > > > If the Direction parameter is EfiUsbNoData, Data
> is
> > > NULL, and
> > > > DataLength is 0, then no data phase exists for
> the
> > > control transfer.
> > > >
> > > > Thanks,
> > > > Star
> > > > -----Original Message-----
> > > > From: Kinney, Michael D
> > > > Sent: Wednesday, November 15, 2017 9:03 AM
> > > > To: edk2-devel@lists.01.org
> > > > Cc: Zeng, Star <star.zeng@intel.com>; Dong, Eric
> > > <eric.dong@intel.com>
> > > > Subject: [Patch V2 1/2] MdeModulePkg/UsbBusDxe:
> Add
> > > > UsbControlTransfer() error check
> > > >
> > > >
> https://bugzilla.tianocore.org/show_bug.cgi?id=767
> > > >
> > > > The USB I/O Protocol function ControlTransfer()
> has
> > a
> > > DataLength
> > > > parameter that specifies the size of the Data
> > buffer.
> > > The UsbBusDxe
> > > > module implements the USB I/O Protocol using the
> > > services of the USB2
> > > > Host Controller Protocol.  The DataLength
> parameter
> > > in the
> > > > USB2 Host Controller Protocol ControlTransfer()
> > > service is an IN OUT
> > > > parameter so the number of bytes actually
> > transferred
> > > is returned.
> > > > Since the USB I/O Protocol
> > > > ControlTransfer() service can not return the
> number
> > > of bytes actually
> > > > transferred, the only option if the number of
> bytes
> > > actually
> > > > transferred is less than the number of bytes
> > > requested is to return
> > > > EFI_DEVICE_ERROR.
> > > >
> > > > The change fixes an issue with a USB mass storage
> > > device that responds
> > > > with 0 bytes to the Get MAX LUN command.
> > > >
> > > > Cc: Star Zeng <star.zeng@intel.com>
> > > > Cc: Eric Dong <eric.dong@intel.com>
> > > > Contributed-under: TianoCore Contribution
> Agreement
> > > 1.1
> > > > Signed-off-by: Michael D Kinney
> > > > <michael.d.kinney@intel.com>
> > > > ---
> > > >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 8
> > +++++++-
> > > >  1 file changed, 7 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git
> > a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > > b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > > index 78220222f6..b0ad7938e9 100644
> > > > --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > > +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c
> > > > @@ -2,7 +2,7 @@
> > > >
> > > >      Usb Bus Driver Binding and Bus IO Protocol.
> > > >
> > > > -Copyright (c) 2004 - 2016, Intel Corporation.
> All
> > > rights
> > > > reserved.<BR>
> > > > +Copyright (c) 2004 - 2017, Intel Corporation.
> All
> > > > rights reserved.<BR>
> > > >  This program and the accompanying materials  are
> > > licensed and made
> > > > available under the terms and conditions of the
> BSD
> > > License  which
> > > > accompanies this distribution.  The full text of
> > the
> > > license may be
> > > > found at @@ -76,6 +76,7 @@ UsbIoControlTransfer (
> > > >    USB_ENDPOINT_DESC       *EpDesc;
> > > >    EFI_TPL                 OldTpl;
> > > >    EFI_STATUS              Status;
> > > > +  UINTN                   RequestedDataLength;
> > > >
> > > >    if (UsbStatus == NULL) {
> > > >      return EFI_INVALID_PARAMETER; @@ -86,6 +87,7
> @@
> > > > UsbIoControlTransfer (
> > > >    UsbIf  = USB_INTERFACE_FROM_USBIO (This);
> > > >    Dev    = UsbIf->Device;
> > > >
> > > > +  RequestedDataLength = DataLength;
> > > >    Status = UsbHcControlTransfer (
> > > >               Dev->Bus,
> > > >               Dev->Address,
> > > > @@ -99,6 +101,10 @@ UsbIoControlTransfer (
> > > >               &Dev->Translator,
> > > >               UsbStatus
> > > >               );
> > > > +  if (!EFI_ERROR (Status) && DataLength <
> > > > RequestedDataLength) {
> > > > +    Status = EFI_DEVICE_ERROR;
> > > > +    goto ON_EXIT;
> > > > +  }
> > > >
> > > >    if (EFI_ERROR (Status) || (*UsbStatus !=
> > > > EFI_USB_NOERROR)) {
> > > >      //
> > > > --
> > > > 2.14.2.windows.3



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-11-16  3:27 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-15  1:02 [Patch V2 0/2] Add Max LUN status/value checks Michael D Kinney
2017-11-15  1:02 ` [Patch V2 1/2] MdeModulePkg/UsbBusDxe: Add UsbControlTransfer() error check Michael D Kinney
2017-11-15  2:39   ` Zeng, Star
2017-11-15  2:46     ` Kinney, Michael D
2017-11-15  2:59       ` Zeng, Star
2017-11-15  4:00         ` Kinney, Michael D
2017-11-15  4:22           ` Zeng, Star
2017-11-15 16:44             ` Kinney, Michael D
2017-11-16  2:25               ` Zeng, Star
2017-11-16  3:31                 ` Kinney, Michael D
2017-11-15  1:02 ` [Patch V2 2/2] MdeModulePkg/UsbMassStorageDxe: Check Get Max LUN status/value Michael D Kinney
2017-11-15  2:37   ` Zeng, Star

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox