summaryrefslogtreecommitdiff
path: root/kernel/exit.c
diff options
context:
space:
mode:
authorRobert Love <rml@tech9.net>2002-04-03 00:45:42 -0800
committerDave Jones <davej@suse.de>2002-04-03 00:45:42 -0800
commit6a1a68c8febfc71c895a05a10afe6812b7c77584 (patch)
tree3199da192742640421a049f821a3bd233d8e5599 /kernel/exit.c
parentda6b470391b402d49e76baf7b28dbfd390eaa7eb (diff)
[PATCH] simple preemption debug check
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. Robert Love
Diffstat (limited to 'kernel/exit.c')
-rw-r--r--kernel/exit.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/exit.c b/kernel/exit.c
index d1a6b1451619..96472474ada7 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -490,6 +490,11 @@ NORET_TYPE void do_exit(long code)
tsk->flags |= PF_EXITING;
del_timer_sync(&tsk->real_timer);
+ if (unlikely(preempt_get_count()))
+ printk(KERN_ERR "error: %s[%d] exited with preempt_count %d\n",
+ current->comm, current->pid,
+ preempt_get_count());
+
fake_volatile:
acct_process(code);
__exit_mm(tsk);