lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 4 May 2010 22:03:33 +0900 From: Takuya Yoshikawa <takuya.yoshikawa@...il.com> To: Takuya Yoshikawa <takuya.yoshikawa@...il.com> Cc: avi@...hat.com, mtosatti@...hat.com, agraf@...e.de, yoshikawa.takuya@....ntt.co.jp, fernando@....ntt.co.jp, kvm@...r.kernel.org, kvm-ppc@...r.kernel.org, kvm-ia64@...r.kernel.org, tglx@...utronix.de, mingo@...hat.com, hpa@...or.com, x86@...nel.org, benh@...nel.crashing.org, paulus@...ba.org, linuxppc-dev@...abs.org, arnd@...db.de, linux-arch@...r.kernel.org, linux-kernel@...r.kernel.org Subject: [RFC][PATCH 6/12 not tested yet] PPC: introduce copy_in_user() for 32-bit During the work of KVM's dirty page logging optimization, we encountered the need of copy_in_user() for 32-bit ppc and x86: these will be used for manipulating dirty bitmaps in user space. So we implement copy_in_user() for 32-bit with __copy_tofrom_user(). Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@....ntt.co.jp> Signed-off-by: Fernando Luis Vazquez Cao <fernando@....ntt.co.jp> CC: Alexander Graf <agraf@...e.de> CC: Benjamin Herrenschmidt <benh@...nel.crashing.org> CC: Paul Mackerras <paulus@...ba.org> --- arch/powerpc/include/asm/uaccess.h | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h index bd0fb84..3a01ce8 100644 --- a/arch/powerpc/include/asm/uaccess.h +++ b/arch/powerpc/include/asm/uaccess.h @@ -359,6 +359,23 @@ static inline unsigned long copy_to_user(void __user *to, return n; } +static inline unsigned long copy_in_user(void __user *to, + const void __user *from, unsigned long n) +{ + unsigned long over; + + if (likely(access_ok(VERIFY_READ, from, n) && + access_ok(VERIFY_WRITE, to, n))) + return __copy_tofrom_user(to, from, n); + if (((unsigned long)from < TASK_SIZE) || + ((unsigned long)to < TASK_SIZE)) { + over = max((unsigned long)from, (unsigned long)to) + + n - TASK_SIZE; + return __copy_tofrom_user(to, from, n - over) + over; + } + return n; +} + #else /* __powerpc64__ */ #define __copy_in_user(to, from, size) \ -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists