diff options
| author | 2008-12-04 08:52:14 +0100 | |
|---|---|---|
| committer | 2008-12-04 08:52:14 +0100 | |
| commit | cb9c34e6d090d376b77becaa5d29a65dec7f4272 (patch) | |
| tree | 3678abce20d6825aebe3fec218057d4131e13fd6 /kernel/posix-cpu-timers.c | |
| parent | genirq: warn when IRQF_DISABLED may be ignored (diff) | |
| parent | Linux 2.6.28-rc7 (diff) | |
| download | wireguard-linux-cb9c34e6d090d376b77becaa5d29a65dec7f4272.tar.xz wireguard-linux-cb9c34e6d090d376b77becaa5d29a65dec7f4272.zip | |
Merge commit 'v2.6.28-rc7' into core/locking
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 153dcb2639c3..895337b16a24 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; |
