mirror of
https://github.com/reactos/reactos.git
synced 2025-07-05 00:51:24 +00:00
[HALX86]
- Do not allow software interrupts to preempt code running with interrupts disabled during KfLowerIrql svn path=/trunk/; revision=54418
This commit is contained in:
parent
01323f857e
commit
aefaa2f4f9
1 changed files with 21 additions and 17 deletions
|
@ -666,6 +666,9 @@ KfLowerIrql(IN KIRQL OldIrql)
|
||||||
/* Set old IRQL */
|
/* Set old IRQL */
|
||||||
Pcr->Irql = OldIrql;
|
Pcr->Irql = OldIrql;
|
||||||
|
|
||||||
|
/* Make sure interrupts were enabled */
|
||||||
|
if (EFlags & EFLAGS_INTERRUPT_MASK)
|
||||||
|
{
|
||||||
/* Check for pending software interrupts and compare with current IRQL */
|
/* Check for pending software interrupts and compare with current IRQL */
|
||||||
PendingIrqlMask = Pcr->IRR & FindHigherIrqlMask[OldIrql];
|
PendingIrqlMask = Pcr->IRR & FindHigherIrqlMask[OldIrql];
|
||||||
if (PendingIrqlMask)
|
if (PendingIrqlMask)
|
||||||
|
@ -686,6 +689,7 @@ KfLowerIrql(IN KIRQL OldIrql)
|
||||||
/* Now handle pending interrupt */
|
/* Now handle pending interrupt */
|
||||||
SWInterruptHandlerTable[PendingIrql]();
|
SWInterruptHandlerTable[PendingIrql]();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Restore interrupt state */
|
/* Restore interrupt state */
|
||||||
__writeeflags(EFlags);
|
__writeeflags(EFlags);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue