diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 57028d49c202aeab53a1b4ccd5d21b3b3052cedb..b9e9bf6288497b0b3a520860e6504cc9928e7824 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c @@ -781,6 +781,8 @@ int mips_set_process_fp_mode(struct task_struct *task, unsigned int value) atomic_set(&task->mm->context.fp_mode_switching, 0); preempt_enable(); + wake_up_var(&task->mm->context.fp_mode_switching); + return 0; } diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 0ae4a731cc121b6e002894067bd61f220735b79f..967e9e4e795e7b808e1129c6db923bd85e366499 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -1248,8 +1248,8 @@ static int enable_restore_fp_context(int msa) * If an FP mode switch is currently underway, wait for it to * complete before proceeding. */ - wait_on_atomic_t(¤t->mm->context.fp_mode_switching, - atomic_t_wait, TASK_KILLABLE); + wait_var_event(¤t->mm->context.fp_mode_switching, + !atomic_read(¤t->mm->context.fp_mode_switching)); if (!used_math()) { /* First time FP context user. */