summaryrefslogtreecommitdiff
path: root/kernel/posix-cpu-timers.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-12-01 22:36:13 +0300
committerIngo Molnar <mingo@elte.hu>2008-12-01 22:36:13 +0300
commitf6d2e6f57bba66272b28dd20c949b14ce39cb804 (patch)
tree2bf153af4d5b4b33ad2c1e88347c7fd752fb6332 /kernel/posix-cpu-timers.c
parent8caac56305cef98f9357b060a77939d17699937d (diff)
parent7b1dedca42ac0d0d0be01e39d8461bb53a2389b3 (diff)
downloadlinux-f6d2e6f57bba66272b28dd20c949b14ce39cb804.tar.xz
Merge branch 'x86/urgent' into x86/iommu
Diffstat (limited to 'kernel/posix-cpu-timers.c')
-rw-r--r--kernel/posix-cpu-timers.c7
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;