diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-01-16 10:09:10 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-01-16 10:09:10 +0100 | 
| commit | af2519fb2298cdf7540082c36f4d8c66bbff103f (patch) | |
| tree | 1d290d28d42d42f9e693457762c4008988628060 /fs/open.c | |
| parent | 961d7d0ee5150e0197cc81c2a8884ecb230276e2 (diff) | |
| parent | 7cb36b6ccdca03bd87e8faca7fd920643dd1aec7 (diff) | |
Merge branch 'linus' into core/iommu
Conflicts:
	arch/ia64/include/asm/dma-mapping.h
	arch/ia64/include/asm/machvec.h
	arch/ia64/include/asm/machvec_sn2.h
Diffstat (limited to 'fs/open.c')
| -rw-r--r-- | fs/open.c | 82 | 
1 files changed, 49 insertions, 33 deletions
diff --git a/fs/open.c b/fs/open.c index d882fd2351d6..a3a78ceb2a2b 100644 --- a/fs/open.c +++ b/fs/open.c @@ -122,7 +122,7 @@ static int vfs_statfs64(struct dentry *dentry, struct statfs64 *buf)  	return 0;  } -asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * buf) +SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct statfs __user *, buf)  {  	struct path path;  	int error; @@ -138,8 +138,7 @@ asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * b  	return error;  } - -asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct statfs64 __user *buf) +SYSCALL_DEFINE3(statfs64, const char __user *, pathname, size_t, sz, struct statfs64 __user *, buf)  {  	struct path path;  	long error; @@ -157,8 +156,7 @@ asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct stat  	return error;  } - -asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user * buf) +SYSCALL_DEFINE2(fstatfs, unsigned int, fd, struct statfs __user *, buf)  {  	struct file * file;  	struct statfs tmp; @@ -176,7 +174,7 @@ out:  	return error;  } -asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 __user *buf) +SYSCALL_DEFINE3(fstatfs64, unsigned int, fd, size_t, sz, struct statfs64 __user *, buf)  {  	struct file * file;  	struct statfs64 tmp; @@ -289,7 +287,7 @@ out:  	return error;  } -asmlinkage long sys_truncate(const char __user * path, unsigned long length) +SYSCALL_DEFINE2(truncate, const char __user *, path, unsigned long, length)  {  	/* on 32-bit boxen it will cut the range 2^31--2^32-1 off */  	return do_sys_truncate(path, (long)length); @@ -341,7 +339,7 @@ out:  	return error;  } -asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length) +SYSCALL_DEFINE2(ftruncate, unsigned int, fd, unsigned long, length)  {  	long ret = do_sys_ftruncate(fd, length, 1);  	/* avoid REGPARM breakage on x86: */ @@ -351,21 +349,35 @@ asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)  /* LFS versions of truncate are only needed on 32 bit machines */  #if BITS_PER_LONG == 32 -asmlinkage long sys_truncate64(const char __user * path, loff_t length) +SYSCALL_DEFINE(truncate64)(const char __user * path, loff_t length)  {  	return do_sys_truncate(path, length);  } +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS +asmlinkage long SyS_truncate64(long path, loff_t length) +{ +	return SYSC_truncate64((const char __user *) path, length); +} +SYSCALL_ALIAS(sys_truncate64, SyS_truncate64); +#endif -asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length) +SYSCALL_DEFINE(ftruncate64)(unsigned int fd, loff_t length)  {  	long ret = do_sys_ftruncate(fd, length, 0);  	/* avoid REGPARM breakage on x86: */  	asmlinkage_protect(2, ret, fd, length);  	return ret;  } +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS +asmlinkage long SyS_ftruncate64(long fd, loff_t length) +{ +	return SYSC_ftruncate64((unsigned int) fd, length); +} +SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64);  #endif +#endif /* BITS_PER_LONG == 32 */ -asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len) +SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len)  {  	struct file *file;  	struct inode *inode; @@ -422,13 +434,20 @@ out_fput:  out:  	return ret;  } +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS +asmlinkage long SyS_fallocate(long fd, long mode, loff_t offset, loff_t len) +{ +	return SYSC_fallocate((int)fd, (int)mode, offset, len); +} +SYSCALL_ALIAS(sys_fallocate, SyS_fallocate); +#endif  /*   * access() needs to use the real uid/gid, not the effective uid/gid.   * We do this by temporarily clearing all FS-related capabilities and   * switching the fsuid/fsgid around to the real ones.   */ -asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode) +SYSCALL_DEFINE3(faccessat, int, dfd, const char __user *, filename, int, mode)  {  	const struct cred *old_cred;  	struct cred *override_cred; @@ -498,12 +517,12 @@ out:  	return res;  } -asmlinkage long sys_access(const char __user *filename, int mode) +SYSCALL_DEFINE2(access, const char __user *, filename, int, mode)  {  	return sys_faccessat(AT_FDCWD, filename, mode);  } -asmlinkage long sys_chdir(const char __user * filename) +SYSCALL_DEFINE1(chdir, const char __user *, filename)  {  	struct path path;  	int error; @@ -524,7 +543,7 @@ out:  	return error;  } -asmlinkage long sys_fchdir(unsigned int fd) +SYSCALL_DEFINE1(fchdir, unsigned int, fd)  {  	struct file *file;  	struct inode *inode; @@ -550,7 +569,7 @@ out:  	return error;  } -asmlinkage long sys_chroot(const char __user * filename) +SYSCALL_DEFINE1(chroot, const char __user *, filename)  {  	struct path path;  	int error; @@ -575,7 +594,7 @@ out:  	return error;  } -asmlinkage long sys_fchmod(unsigned int fd, mode_t mode) +SYSCALL_DEFINE2(fchmod, unsigned int, fd, mode_t, mode)  {  	struct inode * inode;  	struct dentry * dentry; @@ -609,8 +628,7 @@ out:  	return err;  } -asmlinkage long sys_fchmodat(int dfd, const char __user *filename, -			     mode_t mode) +SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, mode_t, mode)  {  	struct path path;  	struct inode *inode; @@ -639,7 +657,7 @@ out:  	return error;  } -asmlinkage long sys_chmod(const char __user *filename, mode_t mode) +SYSCALL_DEFINE2(chmod, const char __user *, filename, mode_t, mode)  {  	return sys_fchmodat(AT_FDCWD, filename, mode);  } @@ -669,7 +687,7 @@ static int chown_common(struct dentry * dentry, uid_t user, gid_t group)  	return error;  } -asmlinkage long sys_chown(const char __user * filename, uid_t user, gid_t group) +SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)  {  	struct path path;  	int error; @@ -688,8 +706,8 @@ out:  	return error;  } -asmlinkage long sys_fchownat(int dfd, const char __user *filename, uid_t user, -			     gid_t group, int flag) +SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user, +		gid_t, group, int, flag)  {  	struct path path;  	int error = -EINVAL; @@ -713,7 +731,7 @@ out:  	return error;  } -asmlinkage long sys_lchown(const char __user * filename, uid_t user, gid_t group) +SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group)  {  	struct path path;  	int error; @@ -732,8 +750,7 @@ out:  	return error;  } - -asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group) +SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)  {  	struct file * file;  	int error = -EBADF; @@ -1029,7 +1046,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode)  	return fd;  } -asmlinkage long sys_open(const char __user *filename, int flags, int mode) +SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)  {  	long ret; @@ -1042,8 +1059,8 @@ asmlinkage long sys_open(const char __user *filename, int flags, int mode)  	return ret;  } -asmlinkage long sys_openat(int dfd, const char __user *filename, int flags, -			   int mode) +SYSCALL_DEFINE4(openat, int, dfd, const char __user *, filename, int, flags, +		int, mode)  {  	long ret; @@ -1062,7 +1079,7 @@ asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,   * For backward compatibility?  Maybe this should be moved   * into arch/i386 instead?   */ -asmlinkage long sys_creat(const char __user * pathname, int mode) +SYSCALL_DEFINE2(creat, const char __user *, pathname, int, mode)  {  	return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);  } @@ -1098,7 +1115,7 @@ EXPORT_SYMBOL(filp_close);   * releasing the fd. This ensures that one clone task can't release   * an fd while another clone is opening it.   */ -asmlinkage long sys_close(unsigned int fd) +SYSCALL_DEFINE1(close, unsigned int, fd)  {  	struct file * filp;  	struct files_struct *files = current->files; @@ -1131,14 +1148,13 @@ out_unlock:  	spin_unlock(&files->file_lock);  	return -EBADF;  } -  EXPORT_SYMBOL(sys_close);  /*   * This routine simulates a hangup on the tty, to arrange that users   * are given clean terminals at login time.   */ -asmlinkage long sys_vhangup(void) +SYSCALL_DEFINE0(vhangup)  {  	if (capable(CAP_SYS_TTY_CONFIG)) {  		tty_vhangup_self();  | 
