From: Ranbir Singh <[email protected]>
The function UhciConvertPollRate has a check
ASSERT (Interval != 0);
but this comes into play only in DEBUG mode. In Release mode, there is
no handling if the Interval parameter value is ZERO. To avoid shifting
by a negative amount later in the code flow in this undesirable case,
it is better to handle it as well by treating it same as if 1 is sent.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4211
Cc: Hao A Wu <[email protected]>
Cc: Ray Ni <[email protected]>
Co-authored-by: Veeresh Sangolli <[email protected]>
Signed-off-by: Ranbir Singh <[email protected]>
Signed-off-by: Ranbir Singh <[email protected]>
---
MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
b/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
index c08f9496969b..408e7d5ab7f3 100644
--- a/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
+++ b/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
@@ -197,7 +197,7 @@ UhciDestoryFrameList (
}
/**
- Convert the poll rate to the maxium 2^n that is smaller
+ Convert the poll rate to the maximum 2^n that is smaller
than Interval.
@param Interval The poll rate to convert.
@@ -214,6 +214,14 @@ UhciConvertPollRate (
ASSERT (Interval != 0);
+ //
+ // To safeguard RELEASE mode wherein ASSERT is effectively not there,
+ // if inadvertently Interval is still 0 here, treat it the same as 1.
+ //
+ if (Interval == 0) {
+ Interval = 1;
+ }
+
//
// Find the index (1 based) of the highest non-zero bit
//
--
2.34.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107789): https://edk2.groups.io/g/devel/message/107789
Mute This Topic: https://groups.io/mt/100774224/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-