diff options
Diffstat (limited to 'arch/mips/kernel/syscall.c')
| -rw-r--r-- | arch/mips/kernel/syscall.c | 18 | 
1 files changed, 13 insertions, 5 deletions
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c index 541b5005957..7c800ec3ff5 100644 --- a/arch/mips/kernel/syscall.c +++ b/arch/mips/kernel/syscall.c @@ -281,16 +281,24 @@ asmlinkage int sys_set_thread_area(unsigned long addr)  asmlinkage int _sys_sysmips(int cmd, long arg1, int arg2, int arg3)  { -	int	tmp; - -	switch(cmd) { +	switch (cmd) {  	case MIPS_ATOMIC_SET:  		printk(KERN_CRIT "How did I get here?\n");  		return -EINVAL;  	case MIPS_FIXADE: -		tmp = current->thread.mflags & ~3; -		current->thread.mflags = tmp | (arg1 & 3); +		if (arg1 & ~3) +			return -EINVAL; + +		if (arg1 & 1) +			set_thread_flag(TIF_FIXADE); +		else +			clear_thread_flag(TIF_FIXADE); +		if (arg1 & 2) +			set_thread_flag(TIF_LOGADE); +		else +			clear_thread_flag(TIF_FIXADE); +  		return 0;  	case FLUSH_CACHE:  |