diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2009-01-14 14:14:02 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-18 10:35:34 -0800 |
commit | e320fca50d219097a39ec411a0066a6cdb836f37 (patch) | |
tree | db19848b96fa2017159c9015c8794d369fdcc850 /fs/dcookies.c | |
parent | 607370f2946963619ba6211af405a471c33ab54b (diff) |
System call wrapper special cases
commit 6673e0c3fbeaed2cd08e2fd4a4aa97382d6fedb0 upstream.
System calls with an unsigned long long argument can't be converted with
the standard wrappers since that would include a cast to long, which in
turn means that we would lose the upper 32 bit on 32 bit architectures.
Also semctl can't use the standard wrapper since it has a 'union'
parameter.
So we handle them as special case and add some extra wrappers instead.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/dcookies.c')
-rw-r--r-- | fs/dcookies.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/dcookies.c b/fs/dcookies.c index 855d4b1d619..f0da95b8301 100644 --- a/fs/dcookies.c +++ b/fs/dcookies.c @@ -140,7 +140,7 @@ out: /* And here is where the userspace process can look up the cookie value * to retrieve the path. */ -asmlinkage long sys_lookup_dcookie(u64 cookie64, char __user * buf, size_t len) +SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len) { unsigned long cookie = (unsigned long)cookie64; int err = -EINVAL; @@ -193,7 +193,13 @@ out: mutex_unlock(&dcookie_mutex); return err; } - +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS +asmlinkage long SyS_lookup_dcookie(u64 cookie64, long buf, long len) +{ + return SYSC_lookup_dcookie(cookie64, (char __user *) buf, (size_t) len); +} +SYSCALL_ALIAS(sys_lookup_dcookie, SyS_lookup_dcookie); +#endif static int dcookie_init(void) { |