RE: hugetlb demand paging patch part [3/3]

From: Chen, Kenneth W
Date: Thu Apr 15 2004 - 21:51:06 EST


>>>> David Gibson wrote on Thursday, April 15, 2004 6:41 PM
> > > > @@ -175,7 +132,6 @@ struct page *follow_huge_addr(struct mm_
> > > > return NULL;
> > > > page = pte_page(*ptep);
> > > > page += ((addr & ~HPAGE_MASK) >> PAGE_SHIFT);
> > > > - get_page(page);
> > > > return page;
> > > > }
> > >
> > > As far as I can tell, the removal of these get_page()s is also
> > > unrelated to the demand paging per se. But afaict removing them is
> > > correct - the corresponding logic in follow_page() for normal pages
> > > doesn't appear to do a get_page(), nor do all archs do a get_page().
> > >
> > > Does that sound right to you?
> >
> > It's a bug in the code that was never exercised with prefaulting. See
> > get_user_pages() that short circuits the rest of faulting code with
> > is_vm_hugetlb_page() test.
>
> Erm.. it's not clear to me that it could never be exercise:
> get_user_pages() is not the only caller of follow_page().

At least we all agree it's a bug :-)


> > > If so, the patch below ought to be safe (and indeed a bugfix) to
> > > apply now:
> >
> > Yep, that's correct, I already did x86 and ia64 in one of the three
> > patches posted. ;-)
>
> Yes, I know, but I'm trying to separate which parts of your patches
> are fixes/cleanups for pre-existing problems, and which are genuinely
> new for demand paging.

The only part I know that is bug fix is the extra get_page() reference
in follow_huge_addr(). All others are for demand paging.

- Ken


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/