On Tue, Jan 16, 2018 at 07:41:24PM -0500, Jeff Moyer wrote: > if (sigmask) { > - if (copy_from_user(&ksigmask, sigmask, sizeof(ksigmask))) > + if (!access_ok(VERIFY_READ, sigmask, > + sizeof(void *) + sizeof(size_t)) || > + __get_user(up, (sigset_t __user * __user *)sigmask) || > + __get_user(sigsetsize, > + (size_t __user *)(sigmask + sizeof(void *)))) > return -EFAULT; How about copy_from_user() on a struct? Making eyes bleed is fun, but people tend to get annoyed when you do it to them...