diff options
author | Paul Mackerras <paulus@samba.org> | 2008-11-19 16:10:32 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-11-19 16:10:32 +1100 |
commit | cea555d384b85271035814c5adad23e6c7fc5d2a (patch) | |
tree | 1181b6333a69a135293ec75f8a48c849ee32c015 /kernel/posix-cpu-timers.c | |
parent | 78608dd32ce46789e970d6c3c423cd668c138d6c (diff) | |
parent | 7f0f598a0069d1ab072375965a4b69137233169c (diff) | |
download | kernel-crypto-cea555d384b85271035814c5adad23e6c7fc5d2a.tar.gz kernel-crypto-cea555d384b85271035814c5adad23e6c7fc5d2a.tar.xz kernel-crypto-cea555d384b85271035814c5adad23e6c7fc5d2a.zip |
Merge branch 'linux-2.6' into next
Diffstat (limited to 'kernel/posix-cpu-timers.c')
-rw-r--r-- | kernel/posix-cpu-timers.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index 153dcb2639c..895337b16a2 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c @@ -1308,9 +1308,10 @@ static inline int task_cputime_expired(const struct task_cputime *sample, */ static inline int fastpath_timer_check(struct task_struct *tsk) { - struct signal_struct *sig = tsk->signal; + struct signal_struct *sig; - if (unlikely(!sig)) + /* tsk == current, ensure it is safe to use ->signal/sighand */ + if (unlikely(tsk->exit_state)) return 0; if (!task_cputime_zero(&tsk->cputime_expires)) { @@ -1323,6 +1324,8 @@ static inline int fastpath_timer_check(struct task_struct *tsk) if (task_cputime_expired(&task_sample, &tsk->cputime_expires)) return 1; } + + sig = tsk->signal; if (!task_cputime_zero(&sig->cputime_expires)) { struct task_cputime group_sample; |