From 8a576733162bb72afb4d1eb3012b0aef8d265018 Mon Sep 17 00:00:00 2001 From: "Rehan, MohammedX" Date: Tue, 15 Feb 2022 16:07:03 +0800 Subject: ShellPkg: Fix Ping GetTimerPeriod API failure 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 Reviewed-by: Zhichao Gao Reviewed-by: Ray Ni --- ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'ShellPkg') diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c index ec1e0a188b..6a002b15e5 100644 --- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c +++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c @@ -259,9 +259,11 @@ GetTimerPeriod ( EFI_EVENT TimerEvent; UINT32 StallCounter; EFI_TPL OldTpl; + UINT32 TimerPeriod; RttTimerTick = 0; StallCounter = 0; + TimerPeriod = 0; Status = gBS->CreateEvent ( EVT_TIMER | EVT_NOTIFY_SIGNAL, @@ -295,7 +297,12 @@ GetTimerPeriod ( gBS->SetTimer (TimerEvent, TimerCancel, 0); gBS->CloseEvent (TimerEvent); - return StallCounter / RttTimerTick; + TimerPeriod = StallCounter / RttTimerTick; + if (TimerPeriod != 0) { + return TimerPeriod; + } else { + return 1; + } } /** -- cgit v1.2.3