Re: copy_from_user() fix

Pavel Machek (pavel@bug.ucw.cz)
Mon, 24 Aug 1998 20:04:04 +0200


Hi!

> > > > Also, I still maintain there should be a mode to raise SIGSEGV
> > > > whenever a system call returns EFAULT. Not doing so breaks the system
> > > > call/library routine transparency, and lets bugs go uncaught.
> > >
> > > Thats a matter for glibc. If you wrap the glibc syscall macros to do
> > > a raise(SIGSEGV) then you get your desire. So its a non kernel item ;)
> >
> > Still, I think that this could be in kernel. It is faster to do here
> > (you can SIGSEGV it directly from pagefault handler), and IMO you
> > _should_ get SIGSEGV for read(0,0,1)...
>
> ??? What's wrong with EFAULT?

Consistency: if you pass bad pointer to library function, behaviour is
undefined, but you probably get SIGSEGV.

If you pass bad pointer to kernel, behaviour is defined to return
-EFAULT. And now, imagine you want to place read into library (I
almost tried that). You would have to play nasty tricks with SIGSEGV
handlers...

IMO behaviour of library and kernel functions should be similar - they
both should SIGSEGV you.

Pavel

-- 
I'm really pavel@atrey.karlin.mff.cuni.cz. 	   Pavel
Look at http://atrey.karlin.mff.cuni.cz/~pavel/ ;-).

- 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