Use EFAULT instead of EINVAL for bad user pointers