Re: copy_from_user/copy_to_user question

Steven Rostedt
2005-12-03T02:02:46Z

On Sat, 2005-12-03 at 01:38 +0000, Al Viro wrote:
> On Fri, Dec 02, 2005 at 08:09:59PM -0500, Steven Rostedt wrote:
> > > Secondly, they seem to use memcpy as opposed to using
> > > copy_to_user/copy_from_user which is also very
> > > dangerous.
> >
> > If they are grabbing data from user context into kernel (or vise versa)
> > that could easily cause an oops. Not to mention it is a security risk.
>
> Not to mention it simply won't work on a many platforms, no matter what...

Hmm, I've only worked with a few platforms (i386, x86_64, ppc, mips, and
a little arm but I don't remember that much). I believe that a memcpy
could work on all these platforms (error prone of course, but if the
memory is mapped its OK). When entering a system call, the kernel still
has access to the memory locations assigned to the user.

It's been a while since I had to deal with the semantics of
copy_to/from_user. So what platforms can not access a user space area
directly. Is there a special assembly command to use to copy from user?

I haven't dealt (yet) with the copy_user of x86_64. Is there a problem
when one tries to copy to/from a 32 bit address while in a 64 bit
address space?

Just curious, sorry for my ignorance here.

-- Steve