summaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/mte.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/kernel/mte.c')
-rw-r--r--arch/arm64/kernel/mte.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/arm64/kernel/mte.c b/arch/arm64/kernel/mte.c
index 3b6b68518003..737503a148bb 100644
--- a/arch/arm64/kernel/mte.c
+++ b/arch/arm64/kernel/mte.c
@@ -218,9 +218,7 @@ void mte_thread_init_user(void)
write_sysreg_s(0, SYS_TFSRE0_EL1);
clear_thread_flag(TIF_MTE_ASYNC_FAULT);
/* disable tag checking and reset tag generation mask */
- current->thread.mte_ctrl = MTE_CTRL_GCR_USER_EXCL_MASK;
- mte_update_sctlr_user(current);
- set_task_sctlr_el1(current->thread.sctlr_user);
+ set_mte_ctrl(current, 0);
}
void mte_thread_switch(struct task_struct *next)
@@ -278,8 +276,10 @@ long set_mte_ctrl(struct task_struct *task, unsigned long arg)
task->thread.mte_ctrl = mte_ctrl;
if (task == current) {
+ preempt_disable();
mte_update_sctlr_user(task);
- set_task_sctlr_el1(task->thread.sctlr_user);
+ update_sctlr_el1(task->thread.sctlr_user);
+ preempt_enable();
}
return 0;