At TPL_HIGH_LEVEL, CPU interrupts are disabled (as per the UEFI specification) and so we should never encounter a situation in which an interrupt occurs at TPL_HIGH_LEVEL.
Restoring TPL to TPL_HIGH_LEVEL is always a no-op. Return immediately from NestedInterruptRestoreTPL(TPL_HIGH_LEVEL), so that we do not need to consider the effect of this possible invariant violation on the remainder of the logic. Signed-off-by: Michael Brown <[email protected]> --- MdeModulePkg/Library/NestedInterruptTplLib/Tpl.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/MdeModulePkg/Library/NestedInterruptTplLib/Tpl.c b/MdeModulePkg/Library/NestedInterruptTplLib/Tpl.c index d56c12a44529..99af553ab189 100644 --- a/MdeModulePkg/Library/NestedInterruptTplLib/Tpl.c +++ b/MdeModulePkg/Library/NestedInterruptTplLib/Tpl.c @@ -99,6 +99,19 @@ NestedInterruptRestoreTPL ( EFI_TPL SavedInProgressRestoreTPL; BOOLEAN DeferredRestoreTPL; + // + // At TPL_HIGH_LEVEL, CPU interrupts are disabled (as per the UEFI + // specification) and so we should never encounter a situation in + // which InterruptedTPL==TPL_HIGH_LEVEL. + // + // Restoring TPL to TPL_HIGH_LEVEL is always a no-op. Return + // immediately so that we do not need to consider the effect of this + // possible invariant violation in the logic below. + // + if (InterruptedTPL >= TPL_HIGH_LEVEL) { + return; + } + // // If the TPL at which this interrupt occurred is equal to that of // the in-progress RestoreTPL() for an outer instance of the same -- 2.43.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114209): https://edk2.groups.io/g/devel/message/114209 Mute This Topic: https://groups.io/mt/103911606/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
