[PATCH] remove duplicated sys_open32() code from 64bit archs
64 bit architectures all implement their own compatibility sys_open(), when in fact the difference is simply not forcing the O_LARGEFILE flag. So use the a common function instead. Signed-off-by: Miklos Szeredi <miklos@szeredi.hu> Cc: <viro@parcelfarce.linux.theplanet.co.uk> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
ab8d11beb4
commit
e922efc342
10
fs/compat.c
10
fs/compat.c
@@ -1274,6 +1274,16 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Exactly like fs/open.c:sys_open(), except that it doesn't set the
|
||||
* O_LARGEFILE flag.
|
||||
*/
|
||||
asmlinkage long
|
||||
compat_sys_open(const char __user *filename, int flags, int mode)
|
||||
{
|
||||
return do_sys_open(filename, flags, mode);
|
||||
}
|
||||
|
||||
/*
|
||||
* compat_count() counts the number of arguments/envelopes. It is basically
|
||||
* a copy of count() from fs/exec.c, except that it works with 32 bit argv
|
||||
|
19
fs/open.c
19
fs/open.c
@@ -933,16 +933,11 @@ void fastcall fd_install(unsigned int fd, struct file * file)
|
||||
|
||||
EXPORT_SYMBOL(fd_install);
|
||||
|
||||
asmlinkage long sys_open(const char __user * filename, int flags, int mode)
|
||||
long do_sys_open(const char __user *filename, int flags, int mode)
|
||||
{
|
||||
char * tmp;
|
||||
int fd;
|
||||
char *tmp = getname(filename);
|
||||
int fd = PTR_ERR(tmp);
|
||||
|
||||
if (force_o_largefile())
|
||||
flags |= O_LARGEFILE;
|
||||
|
||||
tmp = getname(filename);
|
||||
fd = PTR_ERR(tmp);
|
||||
if (!IS_ERR(tmp)) {
|
||||
fd = get_unused_fd();
|
||||
if (fd >= 0) {
|
||||
@@ -959,6 +954,14 @@ asmlinkage long sys_open(const char __user * filename, int flags, int mode)
|
||||
}
|
||||
return fd;
|
||||
}
|
||||
|
||||
asmlinkage long sys_open(const char __user *filename, int flags, int mode)
|
||||
{
|
||||
if (force_o_largefile())
|
||||
flags |= O_LARGEFILE;
|
||||
|
||||
return do_sys_open(filename, flags, mode);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sys_open);
|
||||
|
||||
#ifndef __alpha__
|
||||
|
Reference in New Issue
Block a user