CVSROOT:        /cvs
Module name:    src
Changes by:     d...@cvs.openbsd.org    2014/07/17 06:56:07

Modified files:
        sys/arch/i386/i386: ioapic.c 

Log message:
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.

Reply via email to