diff options
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index bc94b2cc5995..695d1343a254 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -446,6 +446,7 @@ void put_task_stack(struct task_struct *tsk)  void free_task(struct task_struct *tsk)  { +	release_user_cpus_ptr(tsk);  	scs_release(tsk);  #ifndef CONFIG_THREAD_INFO_IN_TASK @@ -828,10 +829,10 @@ void __init fork_init(void)  	for (i = 0; i < MAX_PER_NAMESPACE_UCOUNTS; i++)  		init_user_ns.ucount_max[i] = max_threads/2; -	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_NPROC, task_rlimit(&init_task, RLIMIT_NPROC)); -	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_MSGQUEUE, task_rlimit(&init_task, RLIMIT_MSGQUEUE)); -	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_SIGPENDING, task_rlimit(&init_task, RLIMIT_SIGPENDING)); -	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_MEMLOCK, task_rlimit(&init_task, RLIMIT_MEMLOCK)); +	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_NPROC,      RLIM_INFINITY); +	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_MSGQUEUE,   RLIM_INFINITY); +	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_SIGPENDING, RLIM_INFINITY); +	set_rlimit_ucount_max(&init_user_ns, UCOUNT_RLIMIT_MEMLOCK,    RLIM_INFINITY);  #ifdef CONFIG_VMAP_STACK  	cpuhp_setup_state(CPUHP_BP_PREPARE_DYN, "fork:vm_stack_cache", @@ -924,6 +925,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node)  #endif  	if (orig->cpus_ptr == &orig->cpus_mask)  		tsk->cpus_ptr = &tsk->cpus_mask; +	dup_user_cpus_ptr(tsk, orig, node);  	/*  	 * One for the user space visible state that goes away when reaped. @@ -2083,6 +2085,7 @@ static __latent_entropy struct task_struct *copy_process(  #endif  #ifdef CONFIG_BPF_SYSCALL  	RCU_INIT_POINTER(p->bpf_storage, NULL); +	p->bpf_ctx = NULL;  #endif  	/* Perform scheduler related setup. Assign this task to a CPU. */  |