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.