Hi, there seems to be a bug in affinity handling for CONFIG_MIPS_MT_FPAFF=y. It can be easily reproduced - for two-cpus system set new mask to 4. Call fails, but next sched_getaffinity() call returns 0 as current mask. Simple fix is below. Signed-off-by: Pavel Kiryukhin <vksavl@xxxxxxxxx> diff --git a/arch/mips/kernel/mips-mt-fpaff.c b/arch/mips/kernel/mips-mt-fpaff.cindex 892665b..774f91e 100644 --- a/arch/mips/kernel/mips-mt-fpaff.c +++ b/arch/mips/kernel/mips-mt-fpaff.c @@ -87,9 +87,6 @@ asmlinkage long mipsmt_sys_sched_setaffinity(pid_t pid, unsigned int len, if (retval) goto out_unlock; - /* Record new user-specified CPU set for future reference */ - p->thread.user_cpus_allowed = new_mask; - /* Unlock the task list */ read_unlock(&tasklist_lock); @@ -104,6 +101,10 @@ asmlinkage long mipsmt_sys_sched_setaffinity(pid_t pid, unsigned int len, retval = set_cpus_allowed(p, new_mask); } + /* Record new user-specified CPU set for future reference */ + if (!retval) + p->thread.user_cpus_allowed = new_mask; + out_unlock: put_task_struct(p); unlock_cpu_hotplug();