> On Sat, Sep 09, 2017 at 04:31:47PM -0700, Philip Guenther wrote:
> > Currently on amd64, the copyin(9) family of calls will pass through the 
> > return value of uvm_fault() and thus return not just EFAULT but possibly 
> > EACCES, ENOMEM, and EIO.  Since the return value of those functions is 
> > usually passed through to userspace, that's a Bad Thing IMO and we need to 
> > fix them to always return EFAULT when uvm_fault() fails.
> 
> Personally I prefer to see the real error number in user land.  It
> makes it easier to track down the cause of problems if you know the
> original errno.

But that would change the errno return values from a vast number of
system calls.  That feels like a huge departure from historical Unix.

For instance, open(2) says:

     [EFAULT]           path points outside the process's allocated address
                        space.

I think copyout should only return EFAULT, like it always did, so that
the return values remain from such failures remain unchanged.

If I understand Philip, the occurance of other error numbers are just
an artifacts of in-kernel implementation choices.

Reply via email to