The loop driver assumes some kernel code is re-entrant, when it
definitely isn't (cli/sti pairs get executed). The bug strikes
mostly on a loaded system, so it was terribly hard to track this
bug down. Changing the code to restore the flags works fine, as
the code involved is otherwise re-entrant.
I wonder how much other code in the kernel makes assumptions about
the interrupt state.
-- Andrew E. Mileski mailto:email@example.com