diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-18 13:06:22 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-18 13:06:22 -0700 |
commit | c2a0f5943d8935766a42b2d0870aa4c645e3423d (patch) | |
tree | e3a0b1bd202725989d908cc4686dab4b1d9855d9 /fs/exec.c | |
parent | c83d9945c05570ba6b8ec5460c99d1ab7c6e6671 (diff) | |
download | linux-stable-c2a0f5943d8935766a42b2d0870aa4c645e3423d.tar.gz linux-stable-c2a0f5943d8935766a42b2d0870aa4c645e3423d.tar.bz2 linux-stable-c2a0f5943d8935766a42b2d0870aa4c645e3423d.zip |
Clean up subthread exec
Make sure we re-parent itimers, and use BUG_ON() instead of an explicit
conditional BUG().
Diffstat (limited to 'fs/exec.c')
-rw-r--r-- | fs/exec.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/fs/exec.c b/fs/exec.c index e56ee2437025..3a4b35a14c0d 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -649,6 +649,7 @@ static inline int de_thread(struct task_struct *tsk) } sig->group_exit_task = NULL; sig->notify_count = 0; + sig->real_timer.data = (unsigned long)current; spin_unlock_irq(lock); /* @@ -675,10 +676,8 @@ static inline int de_thread(struct task_struct *tsk) proc_dentry2 = proc_pid_unhash(leader); write_lock_irq(&tasklist_lock); - if (leader->tgid != current->tgid) - BUG(); - if (current->pid == current->tgid) - BUG(); + BUG_ON(leader->tgid != current->tgid); + BUG_ON(current->pid == current->tgid); /* * An exec() starts a new thread group with the * TGID of the previous thread group. Rehash the @@ -726,8 +725,7 @@ static inline int de_thread(struct task_struct *tsk) proc_pid_flush(proc_dentry1); proc_pid_flush(proc_dentry2); - if (exit_state != EXIT_ZOMBIE) - BUG(); + BUG_ON(exit_state != EXIT_ZOMBIE); release_task(leader); } @@ -772,10 +770,8 @@ no_thread_group: kmem_cache_free(sighand_cachep, oldsighand); } - if (!thread_group_empty(current)) - BUG(); - if (!thread_group_leader(current)) - BUG(); + BUG_ON(!thread_group_empty(current)); + BUG_ON(!thread_group_leader(current)); return 0; } |