From e2949cd1d4fd07a70f3487154ee0d2b83438a9bf Mon Sep 17 00:00:00 2001 From: Jonas Bonn Date: Fri, 25 May 2012 08:24:49 +0200 Subject: [PATCH] --- yaml --- r: 307935 b: refs/heads/master c: 603d6637aeb9a14cd0087d7c24c3777bfa51fcbf h: refs/heads/master i: 307933: 87d1dbff4d55e31150e61f88c3ac212692ee2cd7 307931: 7a0ee46fd1f0377d228e1179641b384071b751cc 307927: 8a08f563d53dcdd0de432bf0a09e1faea95e8bf6 307919: aaee84f8da28abd3509e51d7b7ad0433f5c1ddfa 307903: f566fa002d3f5f793371b2610feca928740b5094 v: v3 --- [refs] | 2 +- trunk/arch/openrisc/Kconfig | 1 + trunk/arch/openrisc/include/asm/uaccess.h | 10 ++--- trunk/arch/openrisc/lib/string.S | 52 ----------------------- 4 files changed, 5 insertions(+), 60 deletions(-) diff --git a/[refs] b/[refs] index 9e89808d63eb..770c7d3d6699 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ece78b7df734726e790dcab207f463401ff80440 +refs/heads/master: 603d6637aeb9a14cd0087d7c24c3777bfa51fcbf diff --git a/trunk/arch/openrisc/Kconfig b/trunk/arch/openrisc/Kconfig index 4932247d078a..065623215c58 100644 --- a/trunk/arch/openrisc/Kconfig +++ b/trunk/arch/openrisc/Kconfig @@ -19,6 +19,7 @@ config OPENRISC select GENERIC_CPU_DEVICES select GENERIC_ATOMIC64 select GENERIC_CLOCKEVENTS + select GENERIC_STRNCPY_FROM_USER config MMU def_bool y diff --git a/trunk/arch/openrisc/include/asm/uaccess.h b/trunk/arch/openrisc/include/asm/uaccess.h index f5abaa0ffc38..04b93de92636 100644 --- a/trunk/arch/openrisc/include/asm/uaccess.h +++ b/trunk/arch/openrisc/include/asm/uaccess.h @@ -313,14 +313,10 @@ clear_user(void *addr, unsigned long size) return size; } -extern int __strncpy_from_user(char *dst, const char *src, long count); +#define user_addr_max() \ + (segment_eq(get_fs(), USER_DS) ? TASK_SIZE : ~0UL) -static inline long strncpy_from_user(char *dst, const char *src, long count) -{ - if (access_ok(VERIFY_READ, src, 1)) - return __strncpy_from_user(dst, src, count); - return -EFAULT; -} +extern long strncpy_from_user(char *dest, const char __user *src, long count); /* * Return the size of a string (including the ending 0) diff --git a/trunk/arch/openrisc/lib/string.S b/trunk/arch/openrisc/lib/string.S index 465f04bc7deb..8ceb11ebafb9 100644 --- a/trunk/arch/openrisc/lib/string.S +++ b/trunk/arch/openrisc/lib/string.S @@ -104,58 +104,6 @@ __clear_user: .long 9b, 99b // write fault .previous -/* - * long strncpy_from_user(char *dst, const char *src, long count) - * - * - */ - .global __strncpy_from_user -__strncpy_from_user: - l.addi r1,r1,-16 - l.sw 0(r1),r6 - l.sw 4(r1),r5 - l.sw 8(r1),r4 - l.sw 12(r1),r3 - - l.addi r11,r5,0 -2: l.sfeq r5,r0 - l.bf 1f - l.addi r5,r5,-1 -8: l.lbz r6,0(r4) - l.sfeq r6,r0 - l.bf 1f -9: l.sb 0(r3),r6 - l.addi r3,r3,1 - l.j 2b - l.addi r4,r4,1 -1: - l.lwz r6,0(r1) - l.addi r5,r5,1 - l.sub r11,r11,r5 // r11 holds the return value - - l.lwz r6,0(r1) - l.lwz r5,4(r1) - l.lwz r4,8(r1) - l.lwz r3,12(r1) - l.jr r9 - l.addi r1,r1,16 - - .section .fixup, "ax" -99: - l.movhi r11,hi(-EFAULT) - l.ori r11,r11,lo(-EFAULT) - - l.lwz r6,0(r1) - l.lwz r5,4(r1) - l.lwz r4,8(r1) - l.lwz r3,12(r1) - l.jr r9 - l.addi r1,r1,16 - .previous - - .section __ex_table, "a" - .long 8b, 99b // read fault - .previous /* * extern int __strnlen_user(const char *str, long len, unsigned long top);