| From 1d62d737555e1378eb62a8bba26644f7d97139d2 Mon Sep 17 00:00:00 2001 | 
 | From: Felix Fietkau <nbd@openwrt.org> | 
 | Date: Sun, 19 Jul 2015 00:38:41 +0200 | 
 | Subject: MIPS: Fix sched_getaffinity with MT FPAFF enabled | 
 |  | 
 | From: Felix Fietkau <nbd@openwrt.org> | 
 |  | 
 | commit 1d62d737555e1378eb62a8bba26644f7d97139d2 upstream. | 
 |  | 
 | p->thread.user_cpus_allowed is zero-initialized and is only filled on | 
 | the first sched_setaffinity call. | 
 |  | 
 | To avoid adding overhead in the task initialization codepath, simply OR | 
 | the returned mask in sched_getaffinity with p->cpus_allowed. | 
 |  | 
 | Signed-off-by: Felix Fietkau <nbd@openwrt.org> | 
 | Cc: linux-mips@linux-mips.org | 
 | Patchwork: https://patchwork.linux-mips.org/patch/10740/ | 
 | Signed-off-by: Ralf Baechle <ralf@linux-mips.org> | 
 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 
 |  | 
 | --- | 
 |  arch/mips/kernel/mips-mt-fpaff.c |    5 +++-- | 
 |  1 file changed, 3 insertions(+), 2 deletions(-) | 
 |  | 
 | --- a/arch/mips/kernel/mips-mt-fpaff.c | 
 | +++ b/arch/mips/kernel/mips-mt-fpaff.c | 
 | @@ -154,7 +154,7 @@ asmlinkage long mipsmt_sys_sched_getaffi | 
 |  				      unsigned long __user *user_mask_ptr) | 
 |  { | 
 |  	unsigned int real_len; | 
 | -	cpumask_t mask; | 
 | +	cpumask_t allowed, mask; | 
 |  	int retval; | 
 |  	struct task_struct *p; | 
 |   | 
 | @@ -173,7 +173,8 @@ asmlinkage long mipsmt_sys_sched_getaffi | 
 |  	if (retval) | 
 |  		goto out_unlock; | 
 |   | 
 | -	cpumask_and(&mask, &p->thread.user_cpus_allowed, cpu_possible_mask); | 
 | +	cpumask_or(&allowed, &p->thread.user_cpus_allowed, &p->cpus_allowed); | 
 | +	cpumask_and(&mask, &allowed, cpu_active_mask); | 
 |   | 
 |  out_unlock: | 
 |  	read_unlock(&tasklist_lock); |