>On Thu, Jul 17, 2014 at 06:56, David Gwynne wrote: >> 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. > >The smoke happened to start pouring out at this particular instant >because of the commit to subr_poison.c to use inverted deadbeef >patterns, which flipped the MPSAFE flag from off to on. > >So blame Theo for making me do that. :)
Always looking for a way to make buggy code show it's underside.