Reviewed-by: Fu Siyuan <siyuan...@intel.com> > -----Original Message----- > From: Wang, Fan > Sent: Tuesday, January 9, 2018 9:19 AM > To: edk2-devel@lists.01.org > Cc: Wu, Jiaxin <jiaxin...@intel.com>; Ye, Ting <ting...@intel.com>; Fu, > Siyuan <siyuan...@intel.com> > Subject: [Patch 1/2] MdeModulePkg: Fixed two issues when error occurs in > Mtftp4Start. > > * This function sets returned status as token status and signal token > when error occurs, and it results token status not compliance with > spec definition. This patch fixed this issue. > * This function restore Tpl twice when Mtftp4WrqStart() returns an > error, this patch fixed this issue. > > Cc: Jiaxin Wu <jiaxin...@intel.com> > Cc: Ye Ting <ting...@intel.com> > Cc: Fu Siyuan <siyuan...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Wang Fan <fan.w...@intel.com> > --- > .../Universal/Network/Mtftp4Dxe/Mtftp4Impl.c | 20 ++++++++++++--- > ----- > 1 file changed, 12 insertions(+), 8 deletions(-) > > diff --git a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c > b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c > index 54384e1..f5f9e6d 100644 > --- a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c > +++ b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c > @@ -1,10 +1,10 @@ > /** @file > Interface routine for Mtftp4. > > (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR> > -Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR> > +Copyright (c) 2006 - 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 > http://opensource.org/licenses/bsd-license.php<BR> > > @@ -407,31 +407,33 @@ Mtftp4Start ( > if (EFI_ERROR (Status)) { > gBS->RestoreTPL (OldTpl); > return Status; > } > > + if ((Token->OverrideData != NULL) && !Mtftp4OverrideValid (Instance, > Token->OverrideData)) { > + Status = EFI_INVALID_PARAMETER; > + gBS->RestoreTPL (OldTpl); > + return Status; > + } > + > // > // Set the Operation now to prevent the application start other > // operations. > // > Instance->Operation = Operation; > Override = Token->OverrideData; > > - if ((Override != NULL) && !Mtftp4OverrideValid (Instance, Override)) { > - Status = EFI_INVALID_PARAMETER; > - goto ON_ERROR; > - } > - > if (Token->OptionCount != 0) { > Status = Mtftp4ParseOption ( > Token->OptionList, > Token->OptionCount, > TRUE, > &Instance->RequestOption > ); > > if (EFI_ERROR (Status)) { > + Status = EFI_DEVICE_ERROR; > goto ON_ERROR; > } > } > > // > @@ -482,10 +484,11 @@ Mtftp4Start ( > // Config the unicast UDP child to send initial request > // > Status = Mtftp4ConfigUnicastPort (Instance->UnicastPort, Instance); > > if (EFI_ERROR (Status)) { > + Status = EFI_DEVICE_ERROR; > goto ON_ERROR; > } > > // > // Set initial status. > @@ -499,17 +502,17 @@ Mtftp4Start ( > Status = Mtftp4WrqStart (Instance, Operation); > } else { > Status = Mtftp4RrqStart (Instance, Operation); > } > > - gBS->RestoreTPL (OldTpl); > - > if (EFI_ERROR (Status)) { > + Status = EFI_DEVICE_ERROR; > goto ON_ERROR; > } > > if (Token->Event != NULL) { > + gBS->RestoreTPL (OldTpl); > return EFI_SUCCESS; > } > > // > // Return immediately for asynchronous operation or poll the > @@ -517,10 +520,11 @@ Mtftp4Start ( > // > while (Token->Status == EFI_NOT_READY) { > This->Poll (This); > } > > + gBS->RestoreTPL (OldTpl); > return Token->Status; > > ON_ERROR: > Mtftp4CleanOperation (Instance, Status); > gBS->RestoreTPL (OldTpl); > -- > 1.9.5.msysgit.1
_______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel