lkml.org 
[lkml]   [2005]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: userspace vs. kernelspace address
Hi everbody,

Thanks for your replies.

Lemme explain my problem a little bit more .... I have
a thread that does exactly similar things in
kernel-mode and user-mode (depending on how you
invoked it; of course, the kernel one is forked using
kernel_thread(), and the user one is from
pthread_create()). The architecture-dependant stuff is
taken care of by extensive use of __KERNEL__ macro
testing.

This particular thread gets a packet of data, the
header of which contains address to where it should be
copying the payload associated with that packet. The
kernel-mode thread will need to decide how to copy
data into another process' address space, so will the
user-mode thread.

However I think my copy_to_user and copy_from_user are
failing since the kernel-mode thread is copying data
into another process's address space, and I am not
sure how to do this. Do the get_fs() and set_fs()
combinations let you do that? If not, then how do I do
it?

Something like when you invoke the ->write or ->read
functions, you need to copy the requisite data into
the buffer the application provided you with.

Thanks and regards,
Rock


--- Jan Hudec <bulb@ucw.cz> wrote:

> On Fri, Jan 28, 2005 at 01:06:21 +0100, Bernd
> Petrovitsch wrote:
> > On Thu, 2005-01-27 at 09:14 -0800, Rock Gordon
> wrote:
> > > If I'm given a particular address, how do I test
> > > whether that address is from userspace or from
> kernel
> > > space?
> >
> > You don't.
> >
> > > I need to make these decisions from either
> inside a
> > > kernel module or a userspace program. The idea
> is I
> > > use memcpy() in the user-user version,
> > > copy_from/to_user in the kernel-kernel version,
> and
> > > prohibit the others.
> >
> > You need to know where the address is from and use
> the correct function.
>
> If the interface is defined as taking userland
> address, than kernel
> function passing a kernel address in is responsible
> for calling
> set_fs(KERNEL_DS) before and undoing it after. That
> way the
> copy_to/from_user does not complain.
>
>
-------------------------------------------------------------------------------
> Jan 'Bulb' Hudec <bulb@ucw.cz>
>

> ATTACHMENT part 2 application/pgp-signature
name=signature.asc





__________________________________
Do you Yahoo!?
Take Yahoo! Mail with you! Get it on your mobile phone.
http://mobile.yahoo.com/maildemo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:09    [W:0.054 / U:1.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site