The patch titled

     remove duplicated sys_open32() code from 64bit archs

has been added to the -mm tree.  Its filename is

     remove-duplicated-sys_open32-code-from-64bit-archs.patch

Patches currently in -mm which might be from [EMAIL PROTECTED] are

proc-link-count-fix.patch
remove-ia_attr_flags.patch
namei-cleanup.patch
use-get_fs_struct-in-proc.patch
fix-enum-pid_directory_inos-in-proc-basec.patch
remove-duplicated-code-from-proc-and-ptrace.patch
remove-duplicated-sys_open32-code-from-64bit-archs.patch
cifs_create-fix.patch
deprecate-openfoo-3.patch
pivot_root-circular-reference-fix-3.patch
fuse-maintainers-kconfig-and-makefile-changes.patch
fuse-core.patch
fuse-device-functions.patch
fuse-device-functions-document-mount-options.patch
fuse-device-functions-document-mount-options-documentation-update.patch
fuse-device-functions-request-counter-overflow-fix.patch
fuse-device-functions-module-alias.patch
fuse-read-only-operations.patch
fuse-read-only-operations-follow_link-fix.patch
fuse-read-write-operations.patch
fuse-file-operations.patch
fuse-mount-options.patch
fuse-extended-attribute-operations.patch
fuse-add-padding.patch
fuse-readpages-operation.patch
fuse-tighten-check-for-processes-allowed-access.patch
fuse-stricter-mount-option-checking.patch
fuse-direct-i-o.patch
fuse-direct-i-o-cleanup.patch
fuse-transfer-readdir-data-through-device.patch
fuse-dont-update-file-times.patch
fuse-add-fsync-operation-for-directories.patch
fuse-dont-allow-restarting-of-system-calls.patch



From: Miklos Szeredi <[EMAIL PROTECTED]>

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 <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Cc: Christoph Hellwig <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 arch/ia64/ia32/ia32_entry.S       |    2 +-
 arch/ia64/ia32/sys_ia32.c         |   31 -------------------------------
 arch/ppc64/kernel/misc.S          |    2 +-
 arch/ppc64/kernel/sys_ppc32.c     |   31 -------------------------------
 arch/sparc64/kernel/sys_sparc32.c |   24 +-----------------------
 arch/x86_64/ia32/ia32entry.S      |    2 +-
 arch/x86_64/ia32/sys_ia32.c       |   26 --------------------------
 fs/compat.c                       |   10 ++++++++++
 fs/open.c                         |   19 +++++++++++--------
 include/linux/fs.h                |    1 +
 10 files changed, 26 insertions(+), 122 deletions(-)

diff -puN 
arch/ia64/ia32/ia32_entry.S~remove-duplicated-sys_open32-code-from-64bit-archs 
arch/ia64/ia32/ia32_entry.S
--- 
25/arch/ia64/ia32/ia32_entry.S~remove-duplicated-sys_open32-code-from-64bit-archs
   Mon Aug 29 14:23:41 2005
+++ 25-akpm/arch/ia64/ia32/ia32_entry.S Mon Aug 29 14:23:41 2005
@@ -215,7 +215,7 @@ ia32_syscall_table:
        data8 sys32_fork
        data8 sys_read
        data8 sys_write
-       data8 sys32_open          /* 5 */
+       data8 compat_sys_open     /* 5 */
        data8 sys_close
        data8 sys32_waitpid
        data8 sys_creat
diff -puN 
arch/ia64/ia32/sys_ia32.c~remove-duplicated-sys_open32-code-from-64bit-archs 
arch/ia64/ia32/sys_ia32.c
--- 
25/arch/ia64/ia32/sys_ia32.c~remove-duplicated-sys_open32-code-from-64bit-archs 
    Mon Aug 29 14:23:41 2005
+++ 25-akpm/arch/ia64/ia32/sys_ia32.c   Mon Aug 29 14:23:41 2005
@@ -2359,37 +2359,6 @@ sys32_brk (unsigned int brk)
        return ret;
 }
 
-/*
- * Exactly like fs/open.c:sys_open(), except that it doesn't set the 
O_LARGEFILE flag.
- */
-asmlinkage long
-sys32_open (const char __user * filename, int flags, int mode)
-{
-       char * tmp;
-       int fd, error;
-
-       tmp = getname(filename);
-       fd = PTR_ERR(tmp);
-       if (!IS_ERR(tmp)) {
-               fd = get_unused_fd();
-               if (fd >= 0) {
-                       struct file *f = filp_open(tmp, flags, mode);
-                       error = PTR_ERR(f);
-                       if (IS_ERR(f))
-                               goto out_error;
-                       fd_install(fd, f);
-               }
-out:
-               putname(tmp);
-       }
-       return fd;
-
-out_error:
-       put_unused_fd(fd);
-       fd = error;
-       goto out;
-}
-
 /* Structure for ia32 emulation on ia64 */
 struct epoll_event32
 {
diff -puN 
arch/ppc64/kernel/misc.S~remove-duplicated-sys_open32-code-from-64bit-archs 
arch/ppc64/kernel/misc.S
--- 
25/arch/ppc64/kernel/misc.S~remove-duplicated-sys_open32-code-from-64bit-archs  
    Mon Aug 29 14:23:41 2005
+++ 25-akpm/arch/ppc64/kernel/misc.S    Mon Aug 29 14:23:41 2005
@@ -859,7 +859,7 @@ _GLOBAL(sys_call_table32)
        .llong .ppc_fork
        .llong .sys_read
        .llong .sys_write
-       .llong .sys32_open              /* 5 */
+       .llong .compat_sys_open         /* 5 */
        .llong .sys_close
        .llong .sys32_waitpid
        .llong .sys32_creat
diff -puN 
arch/ppc64/kernel/sys_ppc32.c~remove-duplicated-sys_open32-code-from-64bit-archs
 arch/ppc64/kernel/sys_ppc32.c
--- 
25/arch/ppc64/kernel/sys_ppc32.c~remove-duplicated-sys_open32-code-from-64bit-archs
 Mon Aug 29 14:23:41 2005
+++ 25-akpm/arch/ppc64/kernel/sys_ppc32.c       Mon Aug 29 14:23:41 2005
@@ -867,37 +867,6 @@ off_t ppc32_lseek(unsigned int fd, u32 o
        return sys_lseek(fd, (int)offset, origin);
 }
 
-/*
- * This is just a version for 32-bit applications which does
- * not force O_LARGEFILE on.
- */
-asmlinkage long sys32_open(const char __user * filename, int flags, int mode)
-{
-       char * tmp;
-       int fd, error;
-
-       tmp = getname(filename);
-       fd = PTR_ERR(tmp);
-       if (!IS_ERR(tmp)) {
-               fd = get_unused_fd();
-               if (fd >= 0) {
-                       struct file * f = filp_open(tmp, flags, mode);
-                       error = PTR_ERR(f);
-                       if (IS_ERR(f))
-                               goto out_error;
-                       fd_install(fd, f);
-               }
-out:
-               putname(tmp);
-       }
-       return fd;
-
-out_error:
-       put_unused_fd(fd);
-       fd = error;
-       goto out;
-}
-
 /* Note: it is necessary to treat bufsiz as an unsigned int,
  * with the corresponding cast to a signed int to insure that the 
  * proper conversion (sign extension) between the register representation of a 
signed int (msr in 32-bit mode)
diff -puN 
arch/sparc64/kernel/sys_sparc32.c~remove-duplicated-sys_open32-code-from-64bit-archs
 arch/sparc64/kernel/sys_sparc32.c
--- 
25/arch/sparc64/kernel/sys_sparc32.c~remove-duplicated-sys_open32-code-from-64bit-archs
     Mon Aug 29 14:23:41 2005
+++ 25-akpm/arch/sparc64/kernel/sys_sparc32.c   Mon Aug 29 14:23:41 2005
@@ -1002,29 +1002,7 @@ asmlinkage long sys32_adjtimex(struct ti
 asmlinkage long sparc32_open(const char __user *filename,
                             int flags, int mode)
 {
-       char * tmp;
-       int fd, error;
-
-       tmp = getname(filename);
-       fd = PTR_ERR(tmp);
-       if (!IS_ERR(tmp)) {
-               fd = get_unused_fd();
-               if (fd >= 0) {
-                       struct file * f = filp_open(tmp, flags, mode);
-                       error = PTR_ERR(f);
-                       if (IS_ERR(f))
-                               goto out_error;
-                       fd_install(fd, f);
-               }
-out:
-               putname(tmp);
-       }
-       return fd;
-
-out_error:
-       put_unused_fd(fd);
-       fd = error;
-       goto out;
+       return do_sys_open(filename, flags, mode);
 }
 
 extern unsigned long do_mremap(unsigned long addr,
diff -puN 
arch/x86_64/ia32/ia32entry.S~remove-duplicated-sys_open32-code-from-64bit-archs 
arch/x86_64/ia32/ia32entry.S
--- 
25/arch/x86_64/ia32/ia32entry.S~remove-duplicated-sys_open32-code-from-64bit-archs
  Mon Aug 29 14:23:41 2005
+++ 25-akpm/arch/x86_64/ia32/ia32entry.S        Mon Aug 29 14:23:41 2005
@@ -298,7 +298,7 @@ ia32_sys_call_table:
        .quad stub32_fork
        .quad sys_read
        .quad sys_write
-       .quad sys32_open                /* 5 */
+       .quad compat_sys_open           /* 5 */
        .quad sys_close
        .quad sys32_waitpid
        .quad sys_creat
diff -puN 
arch/x86_64/ia32/sys_ia32.c~remove-duplicated-sys_open32-code-from-64bit-archs 
arch/x86_64/ia32/sys_ia32.c
--- 
25/arch/x86_64/ia32/sys_ia32.c~remove-duplicated-sys_open32-code-from-64bit-archs
   Mon Aug 29 14:23:41 2005
+++ 25-akpm/arch/x86_64/ia32/sys_ia32.c Mon Aug 29 14:23:41 2005
@@ -969,32 +969,6 @@ long sys32_kill(int pid, int sig)
        return sys_kill(pid, sig);
 }
  
-asmlinkage long sys32_open(const char __user * filename, int flags, int mode)
-{
-       char * tmp;
-       int fd, error;
-
-       /* don't force O_LARGEFILE */
-       tmp = getname(filename);
-       fd = PTR_ERR(tmp);
-       if (!IS_ERR(tmp)) {
-               fd = get_unused_fd();
-               if (fd >= 0) {
-                       struct file *f = filp_open(tmp, flags, mode);
-                       error = PTR_ERR(f);
-                       if (IS_ERR(f)) {
-                               put_unused_fd(fd); 
-                               fd = error;
-                       } else {
-                               fsnotify_open(f->f_dentry);
-                               fd_install(fd, f);
-                       }
-               }
-               putname(tmp);
-       }
-       return fd;
-}
-
 extern asmlinkage long
 sys_timer_create(clockid_t which_clock,
                 struct sigevent __user *timer_event_spec,
diff -puN fs/compat.c~remove-duplicated-sys_open32-code-from-64bit-archs 
fs/compat.c
--- 25/fs/compat.c~remove-duplicated-sys_open32-code-from-64bit-archs   Mon Aug 
29 14:23:41 2005
+++ 25-akpm/fs/compat.c Mon Aug 29 14:23:41 2005
@@ -1277,6 +1277,16 @@ out:
 }
 
 /*
+ * 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
  * and envp pointers.
diff -puN fs/open.c~remove-duplicated-sys_open32-code-from-64bit-archs fs/open.c
--- 25/fs/open.c~remove-duplicated-sys_open32-code-from-64bit-archs     Mon Aug 
29 14:23:41 2005
+++ 25-akpm/fs/open.c   Mon Aug 29 14:23:41 2005
@@ -933,16 +933,11 @@ void fastcall fd_install(unsigned int fd
 
 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 __us
        }
        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__
diff -puN include/linux/fs.h~remove-duplicated-sys_open32-code-from-64bit-archs 
include/linux/fs.h
--- 25/include/linux/fs.h~remove-duplicated-sys_open32-code-from-64bit-archs    
Mon Aug 29 14:23:41 2005
+++ 25-akpm/include/linux/fs.h  Mon Aug 29 14:23:41 2005
@@ -1280,6 +1280,7 @@ static inline int break_lease(struct ino
 /* fs/open.c */
 
 extern int do_truncate(struct dentry *, loff_t start);
+extern long do_sys_open(const char __user *filename, int flags, int mode);
 extern struct file *filp_open(const char *, int, int);
 extern struct file * dentry_open(struct dentry *, struct vfsmount *, int);
 extern int filp_close(struct file *, fl_owner_t id);
_
-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to