[parisc-linux] memory management issues
Peter Zijlstra
a.p.zijlstra at chello.nl
Sun May 6 08:42:24 MDT 2007
On Sun, 2007-05-06 at 09:23 -0500, James Bottomley wrote:
> On Thu, 2007-05-03 at 01:11 -0700, Ollie Wild wrote:
> > Is this a bug in get_user_pages()? Should it be calling
> > flush_cache_page() directly?
>
> Just for the sake of completeness, the answer to this is "no". The
> anonymous page part of get_user_pages() is designed to gather pages from
> current processes only (an then, the only in-tree user we have is fuse
> and that's a bit of a hack). The problem with your patch is that you're
> trying to gather non-current pages.
>
> It took me a while to discover this, largely because you do this:
>
> + ret = get_user_pages(current, bprm->mm, pos,
> + 1, 1, 1, &page, NULL);
>
> That's horribly wrong ... you can't use the current process context to
> gather non-current pages ... if anything goes wrong and the page needs
> faulting (unusual for a nascent process, but not impossible) you'll get
> into terrible trouble because the mapping for the page isn't in current.
Right, what would be the proper way to go about this, a NULL tsk?
Because the bprm->mm is un-owned at this point in time. That is, there
is no process context associated with it at all.
More information about the parisc-linux
mailing list