Reviewed-by: Hao Wu <[email protected]>

Best Regards,
Hao Wu


> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of
> Ruiyu Ni
> Sent: Monday, October 15, 2018 2:38 PM
> To: [email protected]
> Cc: Wu, Hao A; Yao, Jiewen; Zeng, Star
> Subject: [edk2] [PATCH 05/11] MdeModulePkg/Usb: Make sure data from
> HW is no more than expected
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ruiyu Ni <[email protected]>
> Cc: Jiewen Yao <[email protected]>
> Cc: Star Zeng <[email protected]>
> Cc: Hao A Wu <[email protected]>
> ---
>  MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c | 9 ++++++---
>  MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c | 7 ++++---
>  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++---
>  3 files changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c
> b/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c
> index fea6f47f4c..168280be81 100644
> --- a/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c
> +++ b/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c
> @@ -1009,9 +1009,12 @@ EhcMonitorAsyncRequests (
>      ProcBuf = NULL;
> 
>      if (Urb->Result == EFI_USB_NOERROR) {
> -      ASSERT (Urb->Completed <= Urb->DataLen);
> -
> -      ProcBuf = AllocatePool (Urb->Completed);
> +      //
> +      // Make sure the data received from HW is no more than expected.
> +      //
> +      if (Urb->Completed <= Urb->DataLen) {
> +        ProcBuf = AllocatePool (Urb->Completed);
> +      }
> 
>        if (ProcBuf == NULL) {
>          EhcUpdateAsyncRequest (Ehc, Urb);
> diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
> b/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
> index 90f010c998..f7510f3ec0 100644
> --- a/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
> +++ b/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
> @@ -2,7 +2,7 @@
> 
>    The EHCI register operation routines.
> 
> -Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2007 - 2018, 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
> @@ -1001,11 +1001,12 @@ UhciMonitorAsyncReqList (
> 
>      //
>      // Copy the data to temporary buffer if there are some
> -    // data transferred. We may have zero-length packet
> +    // data transferred. We may have zero-length packet.
> +    // Make sure the data received from HW is no more than expected.
>      //
>      Data = NULL;
> 
> -    if (QhResult.Complete != 0) {
> +    if ((QhResult.Complete != 0) && (QhResult.Complete <= AsyncReq-
> >DataLen)) {
>        Data = AllocatePool (QhResult.Complete);
> 
>        if (Data == NULL) {
> diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> index 6a2ef4cd5d..166c44bf5e 100644
> --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> @@ -1556,9 +1556,12 @@ XhcMonitorAsyncRequests (
>      //
>      ProcBuf = NULL;
>      if (Urb->Result == EFI_USB_NOERROR) {
> -      ASSERT (Urb->Completed <= Urb->DataLen);
> -
> -      ProcBuf = AllocateZeroPool (Urb->Completed);
> +      //
> +      // Make sure the data received from HW is no more than expected.
> +      //
> +      if (Urb->Completed <= Urb->DataLen) {
> +        ProcBuf = AllocateZeroPool (Urb->Completed);
> +      }
> 
>        if (ProcBuf == NULL) {
>          XhcUpdateAsyncRequest (Xhc, Urb);
> --
> 2.16.1.windows.1
> 
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to