This patch just hooks the compat_sys_{read,write} into the appropriate syscall 
tables.

Please check and comment.
---

 ia64/ia32/ia32_entry.S        |    4 ++--
 mips/kernel/scall64-n32.S     |    4 ++--
 mips/kernel/scall64-o32.S     |    4 ++--
 parisc/kernel/syscall_table.S |    4 ++--
 ppc64/kernel/misc.S           |    4 ++--
 s390/kernel/compat_linux.c    |   16 ----------------
 s390/kernel/compat_wrapper.S  |   12 ++++++------
 s390/kernel/syscalls.S        |    4 ++--
 sparc64/kernel/systbls.S      |    2 +-
 x86_64/ia32/ia32entry.S       |    4 ++--
 10 files changed, 21 insertions(+), 37 deletions(-)

-- 
Cheers,
Stephen Rothwell                    [EMAIL PROTECTED]
http://www.canb.auug.org.au/~sfr/

diff -ruN linus-compat_write.3/arch/ia64/ia32/ia32_entry.S 
linus-compat_write.4/arch/ia64/ia32/ia32_entry.S
--- linus-compat_write.3/arch/ia64/ia32/ia32_entry.S    2005-06-27 
16:07:59.000000000 +1000
+++ linus-compat_write.4/arch/ia64/ia32/ia32_entry.S    2005-07-01 
13:58:03.000000000 +1000
@@ -213,8 +213,8 @@
        data8 sys_ni_syscall      /* 0  -  old "setup(" system call*/
        data8 sys_exit
        data8 sys32_fork
-       data8 sys_read
-       data8 sys_write
+       data8 compat_sys_read
+       data8 compat_sys_write
        data8 sys32_open          /* 5 */
        data8 sys_close
        data8 sys32_waitpid
diff -ruN linus-compat_write.3/arch/mips/kernel/scall64-n32.S 
linus-compat_write.4/arch/mips/kernel/scall64-n32.S
--- linus-compat_write.3/arch/mips/kernel/scall64-n32.S 2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/mips/kernel/scall64-n32.S 2005-07-01 
13:59:26.000000000 +1000
@@ -117,8 +117,8 @@
        END(handle_sysn32)
 
 EXPORT(sysn32_call_table)
-       PTR     sys_read                        /* 6000 */
-       PTR     sys_write
+       PTR     compat_sys_read                 /* 6000 */
+       PTR     compat_sys_write
        PTR     sys_open
        PTR     sys_close
        PTR     sys_newstat
diff -ruN linus-compat_write.3/arch/mips/kernel/scall64-o32.S 
linus-compat_write.4/arch/mips/kernel/scall64-o32.S
--- linus-compat_write.3/arch/mips/kernel/scall64-o32.S 2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/mips/kernel/scall64-o32.S 2005-07-01 
13:59:40.000000000 +1000
@@ -205,8 +205,8 @@
        PTR     sys32_syscall                   /* 4000 */
        PTR     sys_exit
        PTR     sys_fork
-       PTR     sys_read
-       PTR     sys_write
+       PTR     compat_sys_read
+       PTR     compat_sys_write
        PTR     sys_open                        /* 4005 */
        PTR     sys_close
        PTR     sys_waitpid
diff -ruN linus-compat_write.3/arch/parisc/kernel/syscall_table.S 
linus-compat_write.4/arch/parisc/kernel/syscall_table.S
--- linus-compat_write.3/arch/parisc/kernel/syscall_table.S     2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/parisc/kernel/syscall_table.S     2005-07-01 
14:01:50.000000000 +1000
@@ -63,8 +63,8 @@
        ENTRY_SAME(restart_syscall)     /* 0 */
        ENTRY_SAME(exit)
        ENTRY_SAME(fork_wrapper)
-       ENTRY_SAME(read)
-       ENTRY_SAME(write)
+       ENTRY_COMP(read)
+       ENTRY_COMP(write)
        ENTRY_SAME(open)                /* 5 */
        ENTRY_SAME(close)
        ENTRY_SAME(waitpid)
diff -ruN linus-compat_write.3/arch/ppc64/kernel/misc.S 
linus-compat_write.4/arch/ppc64/kernel/misc.S
--- linus-compat_write.3/arch/ppc64/kernel/misc.S       2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/ppc64/kernel/misc.S       2005-07-01 
14:02:23.000000000 +1000
@@ -857,8 +857,8 @@
        .llong .sys_restart_syscall     /* 0 */
        .llong .sys_exit
        .llong .ppc_fork
-       .llong .sys_read
-       .llong .sys_write
+       .llong .compat_sys_read
+       .llong .compat_sys_write
        .llong .sys32_open              /* 5 */
        .llong .sys_close
        .llong .sys32_waitpid
diff -ruN linus-compat_write.3/arch/s390/kernel/compat_linux.c 
linus-compat_write.4/arch/s390/kernel/compat_linux.c
--- linus-compat_write.3/arch/s390/kernel/compat_linux.c        2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/s390/kernel/compat_linux.c        2005-07-01 
14:06:36.000000000 +1000
@@ -980,22 +980,6 @@
        return error;
 }
 
-asmlinkage long sys32_read(unsigned int fd, char * buf, size_t count)
-{
-       if ((compat_ssize_t) count < 0)
-               return -EINVAL; 
-
-       return sys_read(fd, buf, count);
-}
-
-asmlinkage long sys32_write(unsigned int fd, char * buf, size_t count)
-{
-       if ((compat_ssize_t) count < 0)
-               return -EINVAL; 
-
-       return sys_write(fd, buf, count);
-}
-
 asmlinkage long sys32_clone(struct pt_regs regs)
 {
         unsigned long clone_flags;
diff -ruN linus-compat_write.3/arch/s390/kernel/compat_wrapper.S 
linus-compat_write.4/arch/s390/kernel/compat_wrapper.S
--- linus-compat_write.3/arch/s390/kernel/compat_wrapper.S      2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/s390/kernel/compat_wrapper.S      2005-07-01 
14:09:52.000000000 +1000
@@ -13,19 +13,19 @@
        lgfr    %r2,%r2                 # int
        jg      sys_exit                # branch to sys_exit
     
-       .globl  sys32_read_wrapper 
-sys32_read_wrapper:
+       .globl  compat_read_wrapper
+compat_sys_read_wrapper:
        llgfr   %r2,%r2                 # unsigned int
        llgtr   %r3,%r3                 # char *
        llgfr   %r4,%r4                 # size_t
-       jg      sys32_read              # branch to sys_read
+       jg      compat_sys_read         # branch to sys_read
 
-       .globl  sys32_write_wrapper 
-sys32_write_wrapper:
+       .globl  compat_write_wrapper
+compat_sys_write_wrapper:
        llgfr   %r2,%r2                 # unsigned int
        llgtr   %r3,%r3                 # const char *
        llgfr   %r4,%r4                 # size_t
-       jg      sys32_write             # branch to system call
+       jg      compat_sys_write        # branch to system call
 
        .globl  sys32_open_wrapper 
 sys32_open_wrapper:
diff -ruN linus-compat_write.3/arch/s390/kernel/syscalls.S 
linus-compat_write.4/arch/s390/kernel/syscalls.S
--- linus-compat_write.3/arch/s390/kernel/syscalls.S    2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/s390/kernel/syscalls.S    2005-07-01 
14:10:05.000000000 +1000
@@ -11,8 +11,8 @@
 NI_SYSCALL                                                     /* 0 */
 SYSCALL(sys_exit,sys_exit,sys32_exit_wrapper)
 SYSCALL(sys_fork_glue,sys_fork_glue,sys_fork_glue)
-SYSCALL(sys_read,sys_read,sys32_read_wrapper)
-SYSCALL(sys_write,sys_write,sys32_write_wrapper)
+SYSCALL(sys_read,sys_read,compat_sys_read_wrapper)
+SYSCALL(sys_write,sys_write,compat_sys_write_wrapper)
 SYSCALL(sys_open,sys_open,sys32_open_wrapper)                  /* 5 */
 SYSCALL(sys_close,sys_close,sys32_close_wrapper)
 SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall)
diff -ruN linus-compat_write.3/arch/sparc64/kernel/systbls.S 
linus-compat_write.4/arch/sparc64/kernel/systbls.S
--- linus-compat_write.3/arch/sparc64/kernel/systbls.S  2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/sparc64/kernel/systbls.S  2005-07-01 
14:12:24.000000000 +1000
@@ -20,7 +20,7 @@
 
        .globl sys_call_table32
 sys_call_table32:
-/*0*/  .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write
+/*0*/  .word sys_restart_syscall, sys32_exit, sys_fork, compat_sys_read, 
compat_sys_write
 /*5*/  .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link
 /*10*/  .word sys_unlink, sunos_execv, sys_chdir, sys32_chown16, sys32_mknod
 /*15*/ .word sys_chmod, sys32_lchown16, sparc_brk, sys32_perfctr, sys32_lseek
diff -ruN linus-compat_write.3/arch/x86_64/ia32/ia32entry.S 
linus-compat_write.4/arch/x86_64/ia32/ia32entry.S
--- linus-compat_write.3/arch/x86_64/ia32/ia32entry.S   2005-06-27 
16:08:00.000000000 +1000
+++ linus-compat_write.4/arch/x86_64/ia32/ia32entry.S   2005-07-01 
14:12:50.000000000 +1000
@@ -305,8 +305,8 @@
        .quad sys_restart_syscall
        .quad sys_exit
        .quad stub32_fork
-       .quad sys_read
-       .quad sys_write
+       .quad compat_sys_read
+       .quad compat_sys_write
        .quad sys32_open                /* 5 */
        .quad sys_close
        .quad sys32_waitpid

Attachment: pgpqDe5nCZgxa.pgp
Description: PGP signature

Reply via email to