This patch is to fix the hang issue, which was enrolled by the commit of 39b0867d. The TPL should be restored before calling poll function at TPL_CALLBACK.
Cc: Wang Fan <fan.w...@intel.com> Cc: Fu Siyuan <siyuan...@intel.com> Cc: Ye Ting <ting...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu <jiaxin...@intel.com> --- MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c index f5f9e6d8f7..64e0463dd9 100644 --- a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c +++ b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c @@ -507,24 +507,27 @@ Mtftp4Start ( if (EFI_ERROR (Status)) { Status = EFI_DEVICE_ERROR; goto ON_ERROR; } + // + // Restore the TPL now, don't call poll function at TPL_CALLBACK. + // + gBS->RestoreTPL (OldTpl); + if (Token->Event != NULL) { - gBS->RestoreTPL (OldTpl); return EFI_SUCCESS; } // // Return immediately for asynchronous operation or poll the // instance for synchronous operation. // while (Token->Status == EFI_NOT_READY) { This->Poll (This); } - - gBS->RestoreTPL (OldTpl); + return Token->Status; ON_ERROR: Mtftp4CleanOperation (Instance, Status); gBS->RestoreTPL (OldTpl); -- 2.16.2.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel