mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	[CVE-2009-0029] System call wrappers part 19
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
		
							parent
							
								
									a6b42e83f2
								
							
						
					
					
						commit
						003d7ab479
					
				
					 3 changed files with 13 additions and 12 deletions
				
			
		| 
						 | 
					@ -147,7 +147,7 @@ loff_t vfs_llseek(struct file *file, loff_t offset, int origin)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(vfs_llseek);
 | 
					EXPORT_SYMBOL(vfs_llseek);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
 | 
					SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, origin)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	off_t retval;
 | 
						off_t retval;
 | 
				
			||||||
	struct file * file;
 | 
						struct file * file;
 | 
				
			||||||
| 
						 | 
					@ -171,9 +171,9 @@ asmlinkage long sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __ARCH_WANT_SYS_LLSEEK
 | 
					#ifdef __ARCH_WANT_SYS_LLSEEK
 | 
				
			||||||
asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
 | 
					SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high,
 | 
				
			||||||
			   unsigned long offset_low, loff_t __user * result,
 | 
							unsigned long, offset_low, loff_t __user *, result,
 | 
				
			||||||
			   unsigned int origin)
 | 
							unsigned int, origin)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int retval;
 | 
						int retval;
 | 
				
			||||||
	struct file * file;
 | 
						struct file * file;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@
 | 
				
			||||||
 * must be owner or have write permission.
 | 
					 * must be owner or have write permission.
 | 
				
			||||||
 * Else, update from *times, must be owner or super user.
 | 
					 * Else, update from *times, must be owner or super user.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times)
 | 
					SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct timespec tv[2];
 | 
						struct timespec tv[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -214,7 +214,8 @@ asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __u
 | 
				
			||||||
	return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
 | 
						return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes)
 | 
					SYSCALL_DEFINE2(utimes, char __user *, filename,
 | 
				
			||||||
 | 
							struct timeval __user *, utimes)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return sys_futimesat(AT_FDCWD, filename, utimes);
 | 
						return sys_futimesat(AT_FDCWD, filename, utimes);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,7 @@ static int groups16_from_user(struct group_info *group_info,
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist)
 | 
					SYSCALL_DEFINE2(getgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const struct cred *cred = current_cred();
 | 
						const struct cred *cred = current_cred();
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
| 
						 | 
					@ -185,7 +185,7 @@ asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist)
 | 
				
			||||||
	return i;
 | 
						return i;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
 | 
					SYSCALL_DEFINE2(setgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct group_info *group_info;
 | 
						struct group_info *group_info;
 | 
				
			||||||
	int retval;
 | 
						int retval;
 | 
				
			||||||
| 
						 | 
					@ -210,22 +210,22 @@ asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
 | 
				
			||||||
	return retval;
 | 
						return retval;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_getuid16(void)
 | 
					SYSCALL_DEFINE0(getuid16)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return high2lowuid(current_uid());
 | 
						return high2lowuid(current_uid());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_geteuid16(void)
 | 
					SYSCALL_DEFINE0(geteuid16)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return high2lowuid(current_euid());
 | 
						return high2lowuid(current_euid());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_getgid16(void)
 | 
					SYSCALL_DEFINE0(getgid16)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return high2lowgid(current_gid());
 | 
						return high2lowgid(current_gid());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
asmlinkage long sys_getegid16(void)
 | 
					SYSCALL_DEFINE0(getegid16)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return high2lowgid(current_egid());
 | 
						return high2lowgid(current_egid());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue