local_irq_enable();
 
-       if (unlikely(current_thread_info()->flags & _TIF_SYSCALL_DOTRACE)) {
+       if (unlikely(read_thread_flags() & _TIF_SYSCALL_DOTRACE)) {
                if (unlikely(trap_is_unsupported_scv(regs))) {
                        /* Unsupported scv vector */
                        _exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
        unsigned long ti_flags;
 
 again:
-       ti_flags = READ_ONCE(current_thread_info()->flags);
+       ti_flags = read_thread_flags();
        while (unlikely(ti_flags & (_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM))) {
                local_irq_enable();
                if (ti_flags & _TIF_NEED_RESCHED) {
                        do_notify_resume(regs, ti_flags);
                }
                local_irq_disable();
-               ti_flags = READ_ONCE(current_thread_info()->flags);
+               ti_flags = read_thread_flags();
        }
 
        if (IS_ENABLED(CONFIG_PPC_BOOK3S_64) && IS_ENABLED(CONFIG_PPC_FPU)) {
        /* Check whether the syscall is issued inside a restartable sequence */
        rseq_syscall(regs);
 
-       ti_flags = current_thread_info()->flags;
+       ti_flags = read_thread_flags();
 
        if (unlikely(r3 >= (unsigned long)-MAX_ERRNO) && is_not_scv) {
                if (likely(!(ti_flags & (_TIF_NOERROR | _TIF_RESTOREALL)))) {
        unsigned long flags;
        unsigned long ret = 0;
        unsigned long kuap;
-       bool stack_store = current_thread_info()->flags &
-                                               _TIF_EMULATE_STACK_STORE;
+       bool stack_store = read_thread_flags() & _TIF_EMULATE_STACK_STORE;
 
        if (regs_is_unrecoverable(regs))
                unrecoverable_exception(regs);
 again:
                if (IS_ENABLED(CONFIG_PREEMPT)) {
                        /* Return to preemptible kernel context */
-                       if (unlikely(current_thread_info()->flags & _TIF_NEED_RESCHED)) {
+                       if (unlikely(read_thread_flags() & _TIF_NEED_RESCHED)) {
                                if (preempt_count() == 0)
                                        preempt_schedule_irq();
                        }