include/linux/sched.h | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff -puN include/linux/sched.h~put_task_struct-debug include/linux/sched.h --- 25/include/linux/sched.h~put_task_struct-debug 2003-06-05 18:50:53.000000000 -0700 +++ 25-akpm/include/linux/sched.h 2003-06-05 18:50:53.000000000 -0700 @@ -457,12 +457,17 @@ struct task_struct { unsigned long ptrace_message; siginfo_t *last_siginfo; /* For ptrace use. */ + long debug; }; extern void __put_task_struct(struct task_struct *tsk); #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) -#define put_task_struct(tsk) \ -do { if (atomic_dec_and_test(&(tsk)->usage)) __put_task_struct(tsk); } while(0) +#define put_task_struct(tsk) \ + do { \ + BUG_ON((tsk)->debug == 0x6b6b6b6b); \ + if (atomic_dec_and_test(&(tsk)->usage)) \ + __put_task_struct(tsk); \ + } while (0) /* * Per process flags _