Message ID | 20100504220418.083929bc.takuya.yoshikawa@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h index 3a01ce8..f878326 100644 --- a/arch/powerpc/include/asm/uaccess.h +++ b/arch/powerpc/include/asm/uaccess.h @@ -321,6 +321,25 @@ do { \ __gu_err; \ }) +static inline int set_bit_user_non_atomic(int nr, void __user *addr) +{ + u8 __user *p; + u8 val; + + p = (u8 __user *)((unsigned long)addr + nr / BITS_PER_BYTE); + if (!access_ok(VERIFY_WRITE, p, 1)) + return -EFAULT; + + if (__get_user(val, p)) + return -EFAULT; + + val |= 1U << (nr % BITS_PER_BYTE); + if (__put_user(val, p)) + return -EFAULT; + + return 0; +} + /* more complex routines */