|
@@ -413,8 +413,13 @@ void flush_thread(void)
|
|
|
struct thread_info *t = current_thread_info();
|
|
|
struct mm_struct *mm;
|
|
|
|
|
|
- if (t->flags & _TIF_ABI_PENDING)
|
|
|
- t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT);
|
|
|
+ if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
|
|
|
+ clear_ti_thread_flag(t, TIF_ABI_PENDING);
|
|
|
+ if (test_ti_thread_flag(t, TIF_32BIT))
|
|
|
+ clear_ti_thread_flag(t, TIF_32BIT);
|
|
|
+ else
|
|
|
+ set_ti_thread_flag(t, TIF_32BIT);
|
|
|
+ }
|
|
|
|
|
|
mm = t->task->mm;
|
|
|
if (mm)
|