On Mon, Sep 17, 2018 at 1:34 PM Stepan Golosunov <stepan@xxxxxxxxxxxxxxx> wrote: > > On Sun, Sep 16, 2018 at 06:04:57PM -0700, Deepa Dinamani wrote: > > static long do_compat_pselect(int n, compat_ulong_t __user *inp, > > compat_ulong_t __user *outp, compat_ulong_t __user *exp, > > - struct old_timespec32 __user *tsp, compat_sigset_t __user *sigmask, > > - compat_size_t sigsetsize) > > + void __user *tsp, compat_sigset_t __user *sigmask, > > + compat_size_t sigsetsize, enum poll_time_type type) > > { > > sigset_t ksigmask, sigsaved; > > struct timespec64 ts, end_time, *to = NULL; > > int ret; > > > > if (tsp) { > > - if (get_old_timespec32(&ts, tsp)) > > - return -EFAULT; > > + switch (type) { > > + case PT_OLD_TIMESPEC: > > + if (get_old_timespec32(&ts, tsp)) > > + return -EFAULT; > > + break; > > + case PT_TIMESPEC: > > + if (get_old_timespec32(&ts, tsp)) > > + return -EFAULT; > > + break; > > + default: > > + BUG(); > > + } > > One of the two get_old_timespec32 calls here should be > get_timespec64. Right. It is a copy paste bug. Thanks, Deepa