diff options
| author | Robert Richter <robert.richter@amd.com> | 2010-10-01 10:54:17 +0400 |
|---|---|---|
| committer | Robert Richter <robert.richter@amd.com> | 2010-10-01 10:54:17 +0400 |
| commit | ef70fcc0cd5d98f5e2df82c9e598b47f351d4f66 (patch) | |
| tree | b801ba4d7ebb1155df68d530df49444ffa6252cc /kernel/compat.c | |
| parent | 4cbe75be5c6ae86bdc7daec864eeb2dfd66f48bb (diff) | |
| parent | 98d943b02f6f1b57787ff1aa6f34d019a407e3ee (diff) | |
| download | linux-ef70fcc0cd5d98f5e2df82c9e598b47f351d4f66.tar.xz | |
Merge branch 'oprofile/urgent' into oprofile/core
Conflicts:
arch/arm/oprofile/common.c
Signed-off-by: Robert Richter <robert.richter@amd.com>
Diffstat (limited to 'kernel/compat.c')
| -rw-r--r-- | kernel/compat.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/compat.c b/kernel/compat.c index e167efce8423..c9e2ec0b34a8 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -1126,3 +1126,24 @@ compat_sys_sysinfo(struct compat_sysinfo __user *info) return 0; } + +/* + * Allocate user-space memory for the duration of a single system call, + * in order to marshall parameters inside a compat thunk. + */ +void __user *compat_alloc_user_space(unsigned long len) +{ + void __user *ptr; + + /* If len would occupy more than half of the entire compat space... */ + if (unlikely(len > (((compat_uptr_t)~0) >> 1))) + return NULL; + + ptr = arch_compat_alloc_user_space(len); + + if (unlikely(!access_ok(VERIFY_WRITE, ptr, len))) + return NULL; + + return ptr; +} +EXPORT_SYMBOL_GPL(compat_alloc_user_space); |
