From: Matthew Dillon Date: Thu, 22 Dec 2011 19:45:06 +0000 (-0800) Subject: kernel - Reorder critical section interlock in splz() X-Git-Tag: v3.0.0~323 X-Git-Url: http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/b5fc1882b8093c93638c797f071c8c1d04090026 kernel - Reorder critical section interlock in splz() * Reorder a critical section interlock in splz() to remove a one-instruction window where an interrupt might nest against the splz() operation. --- diff --git a/sys/platform/pc32/i386/ipl.s b/sys/platform/pc32/i386/ipl.s index 05bf5a2..01f2324 100644 --- a/sys/platform/pc32/i386/ipl.s +++ b/sys/platform/pc32/i386/ipl.s @@ -443,8 +443,8 @@ splz_soft: addl $FIRST_SOFTINT,%ecx /* actual intr number */ pushl %eax pushl %ecx - decl TD_CRITCOUNT(%ebx) incl TD_NEST_COUNT(%ebx) /* prevent doreti/splz nesting */ + decl TD_CRITCOUNT(%ebx) call sched_ithd_soft /* YYY must pull in imasks */ incl TD_CRITCOUNT(%ebx) decl TD_NEST_COUNT(%ebx) /* prevent doreti/splz nesting */