Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e412ac4971d27ea84f3d63ce425c6ab2d6a67f23
Commit:     e412ac4971d27ea84f3d63ce425c6ab2d6a67f23
Parent:     7c8545e98468c53809fc06788a3b9a34dff05240
Author:     Andi Kleen <[EMAIL PROTECTED]>
AuthorDate: Wed Jun 20 12:23:30 2007 +0200
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Jun 20 14:27:25 2007 -0700

    x86_64: Fix readahead/sync_file_range/fadvise64 compat calls
    
    Correctly convert the u64 arguments from 32bit to 64bit.
    
    Pointed out by Heiko Carstens.
    
    I guess this proves Linus' theory that nobody uses the more exotic Linux
    specific syscalls.  It wasn't discovered by a user.
    
    Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 arch/x86_64/ia32/ia32entry.S |    6 +++---
 arch/x86_64/ia32/sys_ia32.c  |   19 +++++++++++++++++++
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S
index 21868f9..47565c3 100644
--- a/arch/x86_64/ia32/ia32entry.S
+++ b/arch/x86_64/ia32/ia32entry.S
@@ -620,7 +620,7 @@ ia32_sys_call_table:
        .quad quiet_ni_syscall          /* tux */
        .quad quiet_ni_syscall          /* security */
        .quad sys_gettid        
-       .quad sys_readahead     /* 225 */
+       .quad sys32_readahead   /* 225 */
        .quad sys_setxattr
        .quad sys_lsetxattr
        .quad sys_fsetxattr
@@ -645,7 +645,7 @@ ia32_sys_call_table:
        .quad compat_sys_io_getevents
        .quad compat_sys_io_submit
        .quad sys_io_cancel
-       .quad sys_fadvise64             /* 250 */
+       .quad sys32_fadvise64           /* 250 */
        .quad quiet_ni_syscall  /* free_huge_pages */
        .quad sys_exit_group
        .quad sys32_lookup_dcookie
@@ -709,7 +709,7 @@ ia32_sys_call_table:
        .quad compat_sys_set_robust_list
        .quad compat_sys_get_robust_list
        .quad sys_splice
-       .quad sys_sync_file_range
+       .quad sys32_sync_file_range
        .quad sys_tee                   /* 315 */
        .quad compat_sys_vmsplice
        .quad compat_sys_move_pages
diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c
index 200fdde..99a78a3 100644
--- a/arch/x86_64/ia32/sys_ia32.c
+++ b/arch/x86_64/ia32/sys_ia32.c
@@ -860,3 +860,22 @@ long sys32_lookup_dcookie(u32 addr_low, u32 addr_high,
        return sys_lookup_dcookie(((u64)addr_high << 32) | addr_low, buf, len);
 }
 
+asmlinkage ssize_t sys32_readahead(int fd, unsigned off_lo, unsigned off_hi, 
size_t count)
+{
+       return sys_readahead(fd, ((u64)off_hi << 32) | off_lo, count);
+}
+
+asmlinkage long sys32_sync_file_range(int fd, unsigned off_low, unsigned 
off_hi,
+                          unsigned n_low, unsigned n_hi,  int flags)
+{
+       return sys_sync_file_range(fd,
+                                  ((u64)off_hi << 32) | off_low,
+                                  ((u64)n_hi << 32) | n_low, flags);
+}
+
+asmlinkage long sys32_fadvise64(int fd, unsigned offset_lo, unsigned 
offset_hi, size_t len,
+                    int advice)
+{
+       return sys_fadvise64_64(fd, ((u64)offset_hi << 32) | offset_lo,
+                               len, advice);
+}
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to