summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/m32r/kernel/sys_m32r.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/m32r/kernel/sys_m32r.c b/arch/m32r/kernel/sys_m32r.c
index e0500e12c5f..fe55b28d372 100644
--- a/arch/m32r/kernel/sys_m32r.c
+++ b/arch/m32r/kernel/sys_m32r.c
@@ -41,7 +41,8 @@ asmlinkage int sys_tas(int *addr)
return -EFAULT;
local_irq_save(flags);
oldval = *addr;
- *addr = 1;
+ if (!oldval)
+ *addr = 1;
local_irq_restore(flags);
return oldval;
}
@@ -59,7 +60,8 @@ asmlinkage int sys_tas(int *addr)
_raw_spin_lock(&tas_lock);
oldval = *addr;
- *addr = 1;
+ if (!oldval)
+ *addr = 1;
_raw_spin_unlock(&tas_lock);
return oldval;