diff options
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 65ca6d27f24..4133876d8cd 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1233,6 +1233,12 @@ static struct task_struct *copy_process(unsigned long clone_flags,  #ifndef CONFIG_VIRT_CPU_ACCOUNTING  	p->prev_cputime.utime = p->prev_cputime.stime = 0;  #endif +#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN +	seqlock_init(&p->vtime_seqlock); +	p->vtime_snap = 0; +	p->vtime_snap_whence = VTIME_SLEEPING; +#endif +  #if defined(SPLIT_RSS_COUNTING)  	memset(&p->rss_stat, 0, sizeof(p->rss_stat));  #endif @@ -1668,8 +1674,10 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,  		 int, tls_val)  #endif  { -	return do_fork(clone_flags, newsp, 0, -		parent_tidptr, child_tidptr); +	long ret = do_fork(clone_flags, newsp, 0, parent_tidptr, child_tidptr); +	asmlinkage_protect(5, ret, clone_flags, newsp, +			parent_tidptr, child_tidptr, tls_val); +	return ret;  }  #endif  |