1999-11-08 20:24:12

by Stephen C. Tweedie

[permalink] [raw]
Subject: Re: map_user_kiobuf question


In article <[email protected]>, Jeff Garzik
<[email protected]> writes:

> What type of address gets passed to the third argument of
> map_user_kiobuf?

> can I do something like

> addr = vmalloc (size);
> ...
> map_user_kiobuf (xxx, iobuf, (unsigned long) addr, xxx);
> [ ... mess around with iobuf'd pages ... ]
> unmap_kiobuf (iobuf);

No --- and you wouldn't want to.

map_user_kiobuf() checks that the user has got permission to access the
requested pages, but vmalloc returns pages which are only visible from
kernel space.

The whole point about kiobufs is that they abstract away the mechanism
used to select the pages concerned. A consumer of kiobufs doesn't know
where the pages came from originally. If you want to populate the
kiobuf with kernel pages, you can do so: it's just a different kiobuf
populating function.

Thanks for raising this, though: I'll add virtual and physical page
mapping functions for kiobufs.