Skip to content

Commit

Permalink
MdeModulePkg/Bus/Pci/UhciDxe: Fix BAD_SHIFT Coverity issue
Browse files Browse the repository at this point in the history
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 <hao.a.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Co-authored-by: Veeresh Sangolli <veeresh.sangolli@dellteam.com>
Signed-off-by: Ranbir Singh <Ranbir.Singh3@Dell.com>
Signed-off-by: Ranbir Singh <rsingh@ventanamicro.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
  • Loading branch information
2 people authored and mergify[bot] committed Sep 22, 2023
1 parent f67e193 commit e9f5d8c
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
//
Expand Down

0 comments on commit e9f5d8c

Please sign in to comment.