This simple check was first suggested by Andrew Morton. Pretty basic -
whines if a task exits with a nonzero preempt_count value.
I put an identical check in the 2.4 preempt-kernel patch and - sure
enough - it was found that XFS essentially disables preemption as it
destroys data structures containing locks without first unlocking. The
SGI folks are working on that.
Anyhow, its a quick and clean solution to debugging potential problems.
Patch is against 2.5.7, please apply.