kernel - cli interlock with critcount in interrupt assembly
commite74c9440c06bbad6130ad570539fd6c87faf66c8
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 25 Jul 2016 04:44:33 +0000 (24 21:44 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 25 Jul 2016 21:34:09 +0000 (25 14:34 -0700)
tree2320524ca3463cff707d874693f970329b19d54b
parente21e7e638d68209b0232604b7e82c8437239c4e8
kernel - cli interlock with critcount in interrupt assembly

* Disable interrupts when decrementing the critical section count
  and gd_intr_nesting_level, just prior to jumping into doreti.
  This prevents a stacking interrupt from occurring in this roughly
  10-instruction window.

* While limited stacking is not really a problem, this closes a very
  small and unlikely window where multiple device interrupts could
  stack excessively and run the kernel thread out of stack space.
  (unlikely that it has ever happened in real life, but becoming more
  likely as some modern devices are capable of much higher interrupt
  rates).
sys/platform/pc64/apic/apic_vector.s