[CVE-2009-0029] System call wrapper special cases
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>
This commit is contained in:
@@ -201,8 +201,8 @@ asmlinkage long sys_fdatasync(unsigned int fd)
|
||||
* already-instantiated disk blocks, there are no guarantees here that the data
|
||||
* will be available after a crash.
|
||||
*/
|
||||
asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes,
|
||||
unsigned int flags)
|
||||
SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes,
|
||||
unsigned int flags)
|
||||
{
|
||||
int ret;
|
||||
struct file *file;
|
||||
@@ -262,14 +262,32 @@ out_put:
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_sync_file_range(long fd, loff_t offset, loff_t nbytes,
|
||||
long flags)
|
||||
{
|
||||
return SYSC_sync_file_range((int) fd, offset, nbytes,
|
||||
(unsigned int) flags);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_sync_file_range, SyS_sync_file_range);
|
||||
#endif
|
||||
|
||||
/* It would be nice if people remember that not all the world's an i386
|
||||
when they introduce new system calls */
|
||||
asmlinkage long sys_sync_file_range2(int fd, unsigned int flags,
|
||||
loff_t offset, loff_t nbytes)
|
||||
SYSCALL_DEFINE(sync_file_range2)(int fd, unsigned int flags,
|
||||
loff_t offset, loff_t nbytes)
|
||||
{
|
||||
return sys_sync_file_range(fd, offset, nbytes, flags);
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_sync_file_range2(long fd, long flags,
|
||||
loff_t offset, loff_t nbytes)
|
||||
{
|
||||
return SYSC_sync_file_range2((int) fd, (unsigned int) flags,
|
||||
offset, nbytes);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* `endbyte' is inclusive
|
||||
|
||||
Reference in New Issue
Block a user