On Mon, 11 Oct 2004 11:10:33 +0200, Jan Hudec <bulb@xxxxxx> wrote: > On Mon, Oct 11, 2004 at 14:22:56 +0530, Pavan Kumar wrote: > > copy_to_user/copy_from_user takes care of address not in memory (page > > Yes. > > Note: That means, that copy_to/from_user MAY SLEEP and thus must not be > called with spinlocks held. > > > fault), For x86 atleast u can do blind memcpy ( it not > > recommended/portable though ). > > On i386, copy_to/from_user uses the FS register. You definitely can't > access kernel memory with that segment, but it's likely that you can > address user-space with kernel segment. > > Anyway, you can't do blind memcpy because you can't be sure it's mapped, > if nothing else. > True agreed on previous line. I was assuming, I was taking about a no-page fault scenario, where u can use memcpy directly. The reason why i said x86 is I don't know much about others architectures. ( i have to agree that my sentences weren't explicit though, on my assumption) > > Pl. correct me if i am wrong. > > > > On Mon, 11 Oct 2004 09:41:30 +0200, Jan Hudec <bulb@xxxxxx> wrote: > > > On Mon, Oct 11, 2004 at 09:55:37 +0530, mohanlal jangir wrote: > > > > I have a character device and some of its functions are being called by > > > > ioctl. In a function, I do copy_to_user and copy_from_user to get the user > > > > space data in kernel memory. My question is, if this function doesn't sleep, > > > > can I avoid calls to copy_to_user and copy_from_user? > > > > > > No, you can't. The user-space memory is not directly addressable from > > > kernel. > > > > > > ------------------------------------------------------------------------------- > > > Jan 'Bulb' Hudec <bulb@xxxxxx> > > > > > > > > > > > > > > ------------------------------------------------------------------------------- > Jan 'Bulb' Hudec <bulb@xxxxxx> > > > -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/