|
@@ -863,7 +863,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
|
|
|
if (clone_flags & CLONE_THREAD)
|
|
|
return 0;
|
|
|
|
|
|
- sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
|
|
|
+ sig = kmem_cache_zalloc(signal_cachep, GFP_KERNEL);
|
|
|
tsk->signal = sig;
|
|
|
if (!sig)
|
|
|
return -ENOMEM;
|
|
@@ -871,46 +871,21 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
|
|
|
atomic_set(&sig->count, 1);
|
|
|
atomic_set(&sig->live, 1);
|
|
|
init_waitqueue_head(&sig->wait_chldexit);
|
|
|
- sig->flags = 0;
|
|
|
if (clone_flags & CLONE_NEWPID)
|
|
|
sig->flags |= SIGNAL_UNKILLABLE;
|
|
|
- sig->group_exit_code = 0;
|
|
|
- sig->group_exit_task = NULL;
|
|
|
- sig->group_stop_count = 0;
|
|
|
sig->curr_target = tsk;
|
|
|
init_sigpending(&sig->shared_pending);
|
|
|
INIT_LIST_HEAD(&sig->posix_timers);
|
|
|
|
|
|
hrtimer_init(&sig->real_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
|
|
|
- sig->it_real_incr.tv64 = 0;
|
|
|
sig->real_timer.function = it_real_fn;
|
|
|
|
|
|
- sig->leader = 0; /* session leadership doesn't inherit */
|
|
|
- sig->tty_old_pgrp = NULL;
|
|
|
- sig->tty = NULL;
|
|
|
-
|
|
|
- sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero;
|
|
|
- sig->gtime = cputime_zero;
|
|
|
- sig->cgtime = cputime_zero;
|
|
|
-#ifndef CONFIG_VIRT_CPU_ACCOUNTING
|
|
|
- sig->prev_utime = sig->prev_stime = cputime_zero;
|
|
|
-#endif
|
|
|
- sig->nvcsw = sig->nivcsw = sig->cnvcsw = sig->cnivcsw = 0;
|
|
|
- sig->min_flt = sig->maj_flt = sig->cmin_flt = sig->cmaj_flt = 0;
|
|
|
- sig->inblock = sig->oublock = sig->cinblock = sig->coublock = 0;
|
|
|
- sig->maxrss = sig->cmaxrss = 0;
|
|
|
- task_io_accounting_init(&sig->ioac);
|
|
|
- sig->sum_sched_runtime = 0;
|
|
|
- taskstats_tgid_init(sig);
|
|
|
-
|
|
|
task_lock(current->group_leader);
|
|
|
memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim);
|
|
|
task_unlock(current->group_leader);
|
|
|
|
|
|
posix_cpu_timers_init_group(sig);
|
|
|
|
|
|
- acct_init_pacct(&sig->pacct);
|
|
|
-
|
|
|
tty_audit_fork(sig);
|
|
|
|
|
|
sig->oom_adj = current->signal->oom_adj;
|