--- - branch: MAIN date: Tue May 5 20:26:36 UTC 2009 files: - new: '1.27' old: '1.26' path: src/sys/kern/kern_softint.c pathrev: src/sys/kern/kern_softint.c@1.27 type: modified id: 20090505T202636Z.9e2de27d2987d1cdcc78d37f52d9ef9ebe22f8bb log: | Declare sh_flags volatile. Without it, on ports where splhigh() is inline, the compiler will optimise the second SOFTINT_PENDING test in softint_schedule(). A dissasembly of softint_schedule() with and without the volatile sh_flags confirm this on sparc. Because of this there is a race that could lead to the softhand_t being enqueued twice on si_q, leading to a corrupted queue and some handler being SOFTINT_PENDING but never called. Should fix PR kern/38637 module: src subject: 'CVS commit: src/sys/kern' unixtime: '1241555196' user: bouyer