Re: copy_from_user() fixu

H. Peter Anvin (hpa@transmeta.com)
Mon, 24 Aug 1998 23:38:58 -0700 (PDT)


> > No, it's not. EFAULT is non-POSIX: it exposes the difference
> > between system calls and library functions.
>
> EFAULT is used in the Unix98 spec.

Perhaps, but it breaks the spirit of all these standards (that you can
have either a library or kernel implementation).

> I've got code that pretty much expects EFAULT to work one way or
> another. Arguably, the code is broken, but so far it works on most
> OSs I've tried it one.

It IS broken; there is really no excuse for it (you're redirecting
through an invalid pointer, and relying on the internals of libc.)

> > EFAULT is triggered by the same thing as SIGSEGV; the distinction
> > is artificial.
>
> People who want this, should hack their libc so check for a global
> variable and SEGV. (Assuming libc can be made do this cleanly, I
> think it can, but haven't follow this thread that closely).

Someone just pointed out that it really cannot -- you can hack to make
it raise the signal, but the signal context will be all wrong.

-hpa

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html