interrupt handlers established via the ioapic didnt get their
authordlg <dlg@openbsd.org>
Thu, 17 Jul 2014 12:56:07 +0000 (12:56 +0000)
committerdlg <dlg@openbsd.org>
Thu, 17 Jul 2014 12:56:07 +0000 (12:56 +0000)
commit5a571b9eb7f276474a95f9ee94430d99e9813e6b
treeb42d3e1a03935a40462845c845f05c77122b9f67
parent3284a51761cee9ed9c95a4bc0d223373cf0b5c0d
interrupt handlers established via the ioapic didnt get their
ih_flags set. ih_flags are used by the intr_handler() code to
determine if the kernel lock should be taken or not.

because the flags werent set, random memory was used instead which
in turn meant you sometimes didnt have the biglock when running
interrupt handlers which relied on it. races ahoy.

this was found by jmatthew@ while helping me try to figure out why
bnx was blowing up and causing double frees and use after frees.
turns out bnx was the smoke for this fire.

sorry it took so long.

ok kettenis@ sthen@
sthen@ seems happy to have the i386 ports build machine working again.
sys/arch/i386/i386/ioapic.c