| .. | .. | 
|---|
| 10 | 10 |  #include <linux/fs.h> | 
|---|
| 11 | 11 |  #include <linux/mm.h> | 
|---|
| 12 | 12 |  #include <linux/audit.h> | 
|---|
 | 13 | +#include <linux/numa.h>  | 
|---|
| 13 | 14 |  #include <linux/scs.h> | 
|---|
| 14 | 15 |   | 
|---|
| 15 |  | -#include <asm/pgtable.h>  | 
|---|
| 16 | 16 |  #include <linux/uaccess.h> | 
|---|
| 17 | 17 |   | 
|---|
| 18 | 18 |  static struct signal_struct init_signals = { | 
|---|
| .. | .. | 
|---|
| 26 | 26 |  	.multiprocess	= HLIST_HEAD_INIT, | 
|---|
| 27 | 27 |  	.rlim		= INIT_RLIMITS, | 
|---|
| 28 | 28 |  	.cred_guard_mutex = __MUTEX_INITIALIZER(init_signals.cred_guard_mutex), | 
|---|
 | 29 | +	.exec_update_lock = __RWSEM_INITIALIZER(init_signals.exec_update_lock),  | 
|---|
| 29 | 30 |  #ifdef CONFIG_POSIX_TIMERS | 
|---|
| 30 | 31 |  	.posix_timers = LIST_HEAD_INIT(init_signals.posix_timers), | 
|---|
| 31 | 32 |  	.cputimer	= { | 
|---|
| 32 | 33 |  		.cputime_atomic	= INIT_CPUTIME_ATOMIC, | 
|---|
| 33 |  | -		.running	= false,  | 
|---|
| 34 |  | -		.checking_timer = false,  | 
|---|
| 35 | 34 |  	}, | 
|---|
| 36 | 35 |  #endif | 
|---|
| 37 | 36 |  	INIT_CPU_TIMERS(init_signals) | 
|---|
| .. | .. | 
|---|
| 45 | 44 |  }; | 
|---|
| 46 | 45 |   | 
|---|
| 47 | 46 |  static struct sighand_struct init_sighand = { | 
|---|
| 48 |  | -	.count		= ATOMIC_INIT(1),  | 
|---|
 | 47 | +	.count		= REFCOUNT_INIT(1),  | 
|---|
| 49 | 48 |  	.action		= { { { .sa_handler = SIG_DFL, } }, }, | 
|---|
| 50 | 49 |  	.siglock	= __SPIN_LOCK_UNLOCKED(init_sighand.siglock), | 
|---|
| 51 | 50 |  	.signalfd_wqh	= __WAIT_QUEUE_HEAD_INITIALIZER(init_sighand.signalfd_wqh), | 
|---|
| 52 | 51 |  }; | 
|---|
| 53 | 52 |   | 
|---|
| 54 |  | -#if defined(CONFIG_POSIX_TIMERS) && defined(CONFIG_PREEMPT_RT_BASE)  | 
|---|
| 55 |  | -# define INIT_TIMER_LIST		.posix_timer_list = NULL,  | 
|---|
| 56 |  | -#else  | 
|---|
| 57 |  | -# define INIT_TIMER_LIST  | 
|---|
 | 53 | +#ifdef CONFIG_SHADOW_CALL_STACK  | 
|---|
 | 54 | +unsigned long init_shadow_call_stack[SCS_SIZE / sizeof(long)]  | 
|---|
 | 55 | +		__init_task_data = {  | 
|---|
 | 56 | +	[(SCS_SIZE / sizeof(long)) - 1] = SCS_END_MAGIC  | 
|---|
 | 57 | +};  | 
|---|
| 58 | 58 |  #endif | 
|---|
| 59 | 59 |   | 
|---|
| 60 | 60 |  /* | 
|---|
| .. | .. | 
|---|
| 65 | 65 |  #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | 
|---|
| 66 | 66 |  	__init_task_data | 
|---|
| 67 | 67 |  #endif | 
|---|
 | 68 | +	__aligned(L1_CACHE_BYTES)  | 
|---|
| 68 | 69 |  = { | 
|---|
| 69 | 70 |  #ifdef CONFIG_THREAD_INFO_IN_TASK | 
|---|
| 70 | 71 |  	.thread_info	= INIT_THREAD_INFO(init_task), | 
|---|
| 71 |  | -	.stack_refcount	= ATOMIC_INIT(1),  | 
|---|
 | 72 | +	.stack_refcount	= REFCOUNT_INIT(1),  | 
|---|
| 72 | 73 |  #endif | 
|---|
| 73 | 74 |  	.state		= 0, | 
|---|
| 74 | 75 |  	.stack		= init_stack, | 
|---|
| 75 |  | -	.usage		= ATOMIC_INIT(2),  | 
|---|
 | 76 | +	.usage		= REFCOUNT_INIT(2),  | 
|---|
| 76 | 77 |  	.flags		= PF_KTHREAD, | 
|---|
| 77 | 78 |  	.prio		= MAX_PRIO - 20, | 
|---|
| 78 | 79 |  	.static_prio	= MAX_PRIO - 20, | 
|---|
| .. | .. | 
|---|
| 81 | 82 |  	.cpus_ptr	= &init_task.cpus_mask, | 
|---|
| 82 | 83 |  	.cpus_mask	= CPU_MASK_ALL, | 
|---|
| 83 | 84 |  	.nr_cpus_allowed= NR_CPUS, | 
|---|
| 84 |  | -	.cpus_requested	= CPU_MASK_ALL,  | 
|---|
| 85 |  | -#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) && \  | 
|---|
| 86 |  | -    defined(CONFIG_SCHED_DEBUG)  | 
|---|
| 87 |  | -	.pinned_on_cpu	= -1,  | 
|---|
| 88 |  | -#endif  | 
|---|
| 89 | 85 |  	.mm		= NULL, | 
|---|
| 90 | 86 |  	.active_mm	= &init_mm, | 
|---|
| 91 | 87 |  	.restart_block	= { | 
|---|
| .. | .. | 
|---|
| 118 | 114 |  	.thread		= INIT_THREAD, | 
|---|
| 119 | 115 |  	.fs		= &init_fs, | 
|---|
| 120 | 116 |  	.files		= &init_files, | 
|---|
 | 117 | +#ifdef CONFIG_IO_URING  | 
|---|
 | 118 | +	.io_uring	= NULL,  | 
|---|
 | 119 | +#endif  | 
|---|
| 121 | 120 |  	.signal		= &init_signals, | 
|---|
| 122 | 121 |  	.sighand	= &init_sighand, | 
|---|
| 123 | 122 |  	.nsproxy	= &init_nsproxy, | 
|---|
| .. | .. | 
|---|
| 131 | 130 |  	INIT_CPU_TIMERS(init_task) | 
|---|
| 132 | 131 |  	.pi_lock	= __RAW_SPIN_LOCK_UNLOCKED(init_task.pi_lock), | 
|---|
| 133 | 132 |  	.timer_slack_ns = 50000, /* 50 usec default slack */ | 
|---|
| 134 |  | -	INIT_TIMER_LIST  | 
|---|
| 135 | 133 |  	.thread_pid	= &init_struct_pid, | 
|---|
| 136 | 134 |  	.thread_group	= LIST_HEAD_INIT(init_task.thread_group), | 
|---|
| 137 | 135 |  	.thread_node	= LIST_HEAD_INIT(init_signals.thread_head), | 
|---|
| 138 |  | -#ifdef CONFIG_AUDITSYSCALL  | 
|---|
 | 136 | +#ifdef CONFIG_AUDIT  | 
|---|
| 139 | 137 |  	.loginuid	= INVALID_UID, | 
|---|
| 140 | 138 |  	.sessionid	= AUDIT_SID_UNSET, | 
|---|
| 141 | 139 |  #endif | 
|---|
| .. | .. | 
|---|
| 154 | 152 |  	.rcu_tasks_holdout_list = LIST_HEAD_INIT(init_task.rcu_tasks_holdout_list), | 
|---|
| 155 | 153 |  	.rcu_tasks_idle_cpu = -1, | 
|---|
| 156 | 154 |  #endif | 
|---|
 | 155 | +#ifdef CONFIG_TASKS_TRACE_RCU  | 
|---|
 | 156 | +	.trc_reader_nesting = 0,  | 
|---|
 | 157 | +	.trc_reader_special.s = 0,  | 
|---|
 | 158 | +	.trc_holdout_list = LIST_HEAD_INIT(init_task.trc_holdout_list),  | 
|---|
 | 159 | +#endif  | 
|---|
| 157 | 160 |  #ifdef CONFIG_CPUSETS | 
|---|
| 158 |  | -	.mems_allowed_seq = SEQCNT_ZERO(init_task.mems_allowed_seq),  | 
|---|
 | 161 | +	.mems_allowed_seq = SEQCNT_SPINLOCK_ZERO(init_task.mems_allowed_seq,  | 
|---|
 | 162 | +						 &init_task.alloc_lock),  | 
|---|
| 159 | 163 |  #endif | 
|---|
| 160 | 164 |  #ifdef CONFIG_RT_MUTEXES | 
|---|
| 161 | 165 |  	.pi_waiters	= RB_ROOT_CACHED, | 
|---|
| .. | .. | 
|---|
| 168 | 172 |  	.vtime.state	= VTIME_SYS, | 
|---|
| 169 | 173 |  #endif | 
|---|
| 170 | 174 |  #ifdef CONFIG_NUMA_BALANCING | 
|---|
| 171 |  | -	.numa_preferred_nid = -1,  | 
|---|
 | 175 | +	.numa_preferred_nid = NUMA_NO_NODE,  | 
|---|
| 172 | 176 |  	.numa_group	= NULL, | 
|---|
| 173 | 177 |  	.numa_faults	= NULL, | 
|---|
| 174 | 178 |  #endif | 
|---|
| 175 |  | -#ifdef CONFIG_KASAN  | 
|---|
 | 179 | +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)  | 
|---|
| 176 | 180 |  	.kasan_depth	= 1, | 
|---|
 | 181 | +#endif  | 
|---|
 | 182 | +#ifdef CONFIG_KCSAN  | 
|---|
 | 183 | +	.kcsan_ctx = {  | 
|---|
 | 184 | +		.disable_count		= 0,  | 
|---|
 | 185 | +		.atomic_next		= 0,  | 
|---|
 | 186 | +		.atomic_nest_count	= 0,  | 
|---|
 | 187 | +		.in_flat_atomic		= false,  | 
|---|
 | 188 | +		.access_mask		= 0,  | 
|---|
 | 189 | +		.scoped_accesses	= {LIST_POISON1, NULL},  | 
|---|
 | 190 | +	},  | 
|---|
| 177 | 191 |  #endif | 
|---|
| 178 | 192 |  #ifdef CONFIG_TRACE_IRQFLAGS | 
|---|
| 179 | 193 |  	.softirqs_enabled = 1, | 
|---|
| 180 | 194 |  #endif | 
|---|
| 181 | 195 |  #ifdef CONFIG_LOCKDEP | 
|---|
 | 196 | +	.lockdep_depth = 0, /* no locks held yet */  | 
|---|
 | 197 | +	.curr_chain_key = INITIAL_CHAIN_KEY,  | 
|---|
| 182 | 198 |  	.lockdep_recursion = 0, | 
|---|
| 183 | 199 |  #endif | 
|---|
| 184 | 200 |  #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 
|---|
| 185 | 201 |  	.ret_stack		= NULL, | 
|---|
| 186 | 202 |  	.tracing_graph_pause	= ATOMIC_INIT(0), | 
|---|
| 187 | 203 |  #endif | 
|---|
| 188 |  | -#if defined(CONFIG_TRACING) && defined(CONFIG_PREEMPT)  | 
|---|
 | 204 | +#if defined(CONFIG_TRACING) && defined(CONFIG_PREEMPTION)  | 
|---|
| 189 | 205 |  	.trace_recursion = 0, | 
|---|
| 190 | 206 |  #endif | 
|---|
| 191 | 207 |  #ifdef CONFIG_LIVEPATCH | 
|---|
| .. | .. | 
|---|
| 194 | 210 |  #ifdef CONFIG_SECURITY | 
|---|
| 195 | 211 |  	.security	= NULL, | 
|---|
| 196 | 212 |  #endif | 
|---|
 | 213 | +#ifdef CONFIG_SECCOMP_FILTER  | 
|---|
 | 214 | +	.seccomp	= { .filter_count = ATOMIC_INIT(0) },  | 
|---|
 | 215 | +#endif  | 
|---|
 | 216 | +#ifdef CONFIG_ANDROID_VENDOR_OEM_DATA  | 
|---|
 | 217 | +	.android_vendor_data1 = {0, },  | 
|---|
 | 218 | +	.android_oem_data1 = {0, },  | 
|---|
 | 219 | +#endif  | 
|---|
| 197 | 220 |  }; | 
|---|
| 198 | 221 |  EXPORT_SYMBOL(init_task); | 
|---|
| 199 |  | -  | 
|---|
| 200 |  | -#ifdef CONFIG_SHADOW_CALL_STACK  | 
|---|
| 201 |  | -unsigned long init_shadow_call_stack[SCS_SIZE / sizeof(long)] __init_task_data  | 
|---|
| 202 |  | -		__aligned(SCS_SIZE) = {  | 
|---|
| 203 |  | -	[(SCS_SIZE / sizeof(long)) - 1] = SCS_END_MAGIC  | 
|---|
| 204 |  | -};  | 
|---|
| 205 |  | -#endif  | 
|---|
| 206 | 222 |   | 
|---|
| 207 | 223 |  /* | 
|---|
| 208 | 224 |   * Initial thread structure. Alignment of this is handled by a special | 
|---|