Lines Matching refs:task

275 static __always_inline void save_fsgs(struct task_struct *task)  in save_fsgs()  argument
277 savesegment(fs, task->thread.fsindex); in save_fsgs()
278 savesegment(gs, task->thread.gsindex); in save_fsgs()
285 task->thread.fsbase = rdfsbase(); in save_fsgs()
286 task->thread.gsbase = __rdgsbase_inactive(); in save_fsgs()
288 save_base_legacy(task, task->thread.fsindex, FS); in save_fsgs()
289 save_base_legacy(task, task->thread.gsindex, GS); in save_fsgs()
413 unsigned long x86_fsgsbase_read_task(struct task_struct *task, in x86_fsgsbase_read_task() argument
431 base = get_desc_base(&task->thread.tls_array[idx]); in x86_fsgsbase_read_task()
441 mutex_lock(&task->mm->context.lock); in x86_fsgsbase_read_task()
442 ldt = task->mm->context.ldt; in x86_fsgsbase_read_task()
447 mutex_unlock(&task->mm->context.lock); in x86_fsgsbase_read_task()
486 unsigned long x86_fsbase_read_task(struct task_struct *task) in x86_fsbase_read_task() argument
490 if (task == current) in x86_fsbase_read_task()
493 (task->thread.fsindex == 0)) in x86_fsbase_read_task()
494 fsbase = task->thread.fsbase; in x86_fsbase_read_task()
496 fsbase = x86_fsgsbase_read_task(task, task->thread.fsindex); in x86_fsbase_read_task()
501 unsigned long x86_gsbase_read_task(struct task_struct *task) in x86_gsbase_read_task() argument
505 if (task == current) in x86_gsbase_read_task()
508 (task->thread.gsindex == 0)) in x86_gsbase_read_task()
509 gsbase = task->thread.gsbase; in x86_gsbase_read_task()
511 gsbase = x86_fsgsbase_read_task(task, task->thread.gsindex); in x86_gsbase_read_task()
516 void x86_fsbase_write_task(struct task_struct *task, unsigned long fsbase) in x86_fsbase_write_task() argument
518 WARN_ON_ONCE(task == current); in x86_fsbase_write_task()
520 task->thread.fsbase = fsbase; in x86_fsbase_write_task()
523 void x86_gsbase_write_task(struct task_struct *task, unsigned long gsbase) in x86_gsbase_write_task() argument
525 WARN_ON_ONCE(task == current); in x86_gsbase_write_task()
527 task->thread.gsbase = gsbase; in x86_gsbase_write_task()
867 long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2) in do_arch_prctl_64() argument
883 if (task == current) { in do_arch_prctl_64()
891 task->thread.gsbase = arg2; in do_arch_prctl_64()
894 task->thread.gsindex = 0; in do_arch_prctl_64()
895 x86_gsbase_write_task(task, arg2); in do_arch_prctl_64()
913 if (task == current) { in do_arch_prctl_64()
921 task->thread.fsbase = arg2; in do_arch_prctl_64()
923 task->thread.fsindex = 0; in do_arch_prctl_64()
924 x86_fsbase_write_task(task, arg2); in do_arch_prctl_64()
930 unsigned long base = x86_fsbase_read_task(task); in do_arch_prctl_64()
936 unsigned long base = x86_gsbase_read_task(task); in do_arch_prctl_64()
956 return put_user(task->mm->context.untag_mask, in do_arch_prctl_64()
959 return prctl_enable_tagged_addr(task->mm, arg2); in do_arch_prctl_64()
961 if (current != task) in do_arch_prctl_64()
963 set_bit(MM_CONTEXT_FORCE_TAGGED_SVA, &task->mm->context.flags); in do_arch_prctl_64()
976 return shstk_prctl(task, option, arg2); in do_arch_prctl_64()