Re: locking user memory and kiobuf

Jeff Garzik (jgarzik@mandrakesoft.com)
Mon, 08 Nov 1999 12:49:08 -0500


Bret Indrelee wrote:
> > Note struct kiobuf includes an array of pages which causes some of my
> > confusion. Is it legal/possible to do:
> >
> > /* maps in four pages for read/write access */
> > err = map_user_kiobuf (WRITE, iobuf, (ulong) vmaddr,
> > PAGE_SIZE * 4);
> >
> > /* manipulate data in chunks greater than PAGE_SIZE */
> > phys = page_address(iobuf->maplist[0]);
> > memcpy (foo, phys, PAGE_SIZE * 4);
>
> The pages should be virtually contiguous in user space, so I think something
> like this my work.
>
> Does page_address() return a virtual or physical address? To me it looks
> like it may be a physical address, in which case you would have to do:
> memcpy (foo, phys_to_virt(phys), PAGE_SIZE *4);

Not true. The above code example was in kernel space, and the memcpy is
definitely in kernel (physical) address space as well.

-- 
Jeff Garzik              | Just once, I wish we would encounter
Building 1024            | an alien menace that wasn't immune to
MandrakeSoft, Inc.       | bullets.   -- The Brigadier, "Dr. Who"

- 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.tux.org/lkml/