lkml.org 
[lkml]   [2011]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH] sys_poll: Fix negative timeout values for x86 userland on x86_64 kernels
    From
    Date
    sizeof(int/long) differs on x86 and x86_64, so provide a compat_sys_poll().

    Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
    ---
    arch/x86/ia32/ia32entry.S | 2 +-
    fs/compat.c | 6 ++++++
    include/linux/compat.h | 2 ++
    3 files changed, 9 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
    index 54edb207..30f4116 100644
    --- a/arch/x86/ia32/ia32entry.S
    +++ b/arch/x86/ia32/ia32entry.S
    @@ -671,7 +671,7 @@ ia32_sys_call_table:
    .quad sys_getresuid16 /* 165 */
    .quad sys32_vm86_warning /* vm86 */
    .quad quiet_ni_syscall /* query_module */
    - .quad sys_poll
    + .quad compat_sys_poll
    .quad quiet_ni_syscall /* old nfsservctl */
    .quad sys_setresgid16 /* 170 */
    .quad sys_getresgid16
    diff --git a/fs/compat.c b/fs/compat.c
    index 58b1da4..f176fda 100644
    --- a/fs/compat.c
    +++ b/fs/compat.c
    @@ -1621,6 +1621,12 @@ asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
    sigsetsize);
    }

    +asmlinkage long compat_sys_poll(struct pollfd __user *ufds, unsigned int nfds,
    + int timeout)
    +{
    + return sys_poll(ufds, nfds, timeout);
    +}
    +
    asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
    unsigned int nfds, struct compat_timespec __user *tsp,
    const compat_sigset_t __user *sigmask, compat_size_t sigsetsize)
    diff --git a/include/linux/compat.h b/include/linux/compat.h
    index c6e7523..3bfb30a 100644
    --- a/include/linux/compat.h
    +++ b/include/linux/compat.h
    @@ -433,6 +433,8 @@ asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
    compat_ulong_t __user *exp,
    struct compat_timespec __user *tsp,
    void __user *sig);
    +asmlinkage long compat_sys_poll(struct pollfd __user *ufds, unsigned int nfds,
    + int timeout);
    asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
    unsigned int nfds,
    struct compat_timespec __user *tsp,
    --
    1.7.6



    \
     
     \ /
      Last update: 2011-09-17 14:33    [W:0.027 / U:1.100 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site