]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Fix Ping GetTimerPeriod API failure
authorRehan, MohammedX <mohammedx.rehan@intel.com>
Tue, 15 Feb 2022 08:07:03 +0000 (16:07 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 16 Feb 2022 08:09:46 +0000 (08:09 +0000)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3819

Ping GetTimerPeriod API returns sometime zero value when
StallCounter has smaller value than RttTimerTick (divide by zero)
which results some failure at ping UEFI shell command

Signed-off-by: MohammedX Rehan <mohammedx.rehan@intel.com>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c

index ec1e0a188b1fb512ef0c3771670b81d6550e436e..6a002b15e5f86c20b7b6b4269e9f4a16e40f6bd7 100644 (file)
@@ -259,9 +259,11 @@ GetTimerPeriod (
   EFI_EVENT   TimerEvent;\r
   UINT32      StallCounter;\r
   EFI_TPL     OldTpl;\r
+  UINT32      TimerPeriod;\r
 \r
   RttTimerTick = 0;\r
   StallCounter = 0;\r
+  TimerPeriod  = 0;\r
 \r
   Status = gBS->CreateEvent (\r
                   EVT_TIMER | EVT_NOTIFY_SIGNAL,\r
@@ -295,7 +297,12 @@ GetTimerPeriod (
   gBS->SetTimer (TimerEvent, TimerCancel, 0);\r
   gBS->CloseEvent (TimerEvent);\r
 \r
-  return StallCounter / RttTimerTick;\r
+  TimerPeriod = StallCounter / RttTimerTick;\r
+  if (TimerPeriod != 0) {\r
+    return TimerPeriod;\r
+  } else {\r
+    return 1;\r
+  }\r
 }\r
 \r
 /**\r