diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-05 18:32:03 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-05 18:32:03 -0500 |
| commit | ef26b1691d11e17af205a4ff9c91458d931d11db (patch) | |
| tree | 5db199f404ca18f6c9e8617b684e9165ca365e30 /arch/x86/lib/usercopy_32.c | |
| parent | a77d2e081bbbccb38f42da45500dd089756efdfb (diff) | |
| parent | 7cff7ce94a7df2ccf5ac76b48ee0995fee2060df (diff) | |
Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
include/linux/compiler-gcc4.h: Fix build bug - gcc-4.0.2 doesn't understand __builtin_object_size
x86/alternatives: No need for alternatives-asm.h to re-invent stuff already in asm.h
x86/alternatives: Check replacementlen <= instrlen at build time
x86, 64-bit: Set data segments to null after switching to 64-bit mode
x86: Clean up the loadsegment() macro
x86: Optimize loadsegment()
x86: Add missing might_fault() checks to copy_{to,from}_user()
x86-64: __copy_from_user_inatomic() adjustments
x86: Remove unused thread_return label from switch_to()
x86, 64-bit: Fix bstep_iret jump
x86: Don't use the strict copy checks when branch profiling is in use
x86, 64-bit: Move K8 B step iret fixup to fault entry asm
x86: Generate cmpxchg build failures
x86: Add a Kconfig option to turn the copy_from_user warnings into errors
x86: Turn the copy_from_user check into an (optional) compile time warning
x86: Use __builtin_memset and __builtin_memcpy for memset/memcpy
x86: Use __builtin_object_size() to validate the buffer size for copy_from_user()
Diffstat (limited to 'arch/x86/lib/usercopy_32.c')
| -rw-r--r-- | arch/x86/lib/usercopy_32.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c index 1f118d462acc..e218d5df85ff 100644 --- a/arch/x86/lib/usercopy_32.c +++ b/arch/x86/lib/usercopy_32.c | |||
| @@ -874,7 +874,7 @@ EXPORT_SYMBOL(copy_to_user); | |||
| 874 | * data to the requested size using zero bytes. | 874 | * data to the requested size using zero bytes. |
| 875 | */ | 875 | */ |
| 876 | unsigned long | 876 | unsigned long |
| 877 | copy_from_user(void *to, const void __user *from, unsigned long n) | 877 | _copy_from_user(void *to, const void __user *from, unsigned long n) |
| 878 | { | 878 | { |
| 879 | if (access_ok(VERIFY_READ, from, n)) | 879 | if (access_ok(VERIFY_READ, from, n)) |
| 880 | n = __copy_from_user(to, from, n); | 880 | n = __copy_from_user(to, from, n); |
| @@ -882,4 +882,10 @@ copy_from_user(void *to, const void __user *from, unsigned long n) | |||
| 882 | memset(to, 0, n); | 882 | memset(to, 0, n); |
| 883 | return n; | 883 | return n; |
| 884 | } | 884 | } |
| 885 | EXPORT_SYMBOL(copy_from_user); | 885 | EXPORT_SYMBOL(_copy_from_user); |
| 886 | |||
| 887 | void copy_from_user_overflow(void) | ||
| 888 | { | ||
| 889 | WARN(1, "Buffer overflow detected!\n"); | ||
| 890 | } | ||
| 891 | EXPORT_SYMBOL(copy_from_user_overflow); | ||
