diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2010-01-05 20:41:48 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-01-05 20:41:48 -0800 |
commit | 6df1c176994fab993f3112e3e4145a7d2bae64d0 (patch) | |
tree | bfbe02788e9e75be4e24285aa49539463a3539f3 /arch/sparc/include/asm/uaccess_32.h | |
parent | e04ed38d4e0cd32141f723560efcc8252b0241e2 (diff) | |
download | lwn-6df1c176994fab993f3112e3e4145a7d2bae64d0.tar.gz lwn-6df1c176994fab993f3112e3e4145a7d2bae64d0.zip |
sparc: copy_from_user() should not return -EFAULT
From: Heiko Carstens <heiko.carstens@de.ibm.com>
Callers of copy_from_user() expect it to return the number of bytes
it could not copy. In no case it is supposed to return -EFAULT.
In case of a detected buffer overflow just return the requested
length. In addition one could think of a memset that would clear
the size of the target object.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include/asm/uaccess_32.h')
-rw-r--r-- | arch/sparc/include/asm/uaccess_32.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h index 489d2ba92bcb..25f1d10155e8 100644 --- a/arch/sparc/include/asm/uaccess_32.h +++ b/arch/sparc/include/asm/uaccess_32.h @@ -274,7 +274,7 @@ static inline unsigned long copy_from_user(void *to, const void __user *from, un if (unlikely(sz != -1 && sz < n)) { copy_from_user_overflow(); - return -EFAULT; + return n; } if (n && __access_ok((unsigned long) from, n)) |