Re: [PATCH 2.5.66-mm2] Fix page_convert_anon locking issues

Hugh Dickins (hugh@veritas.com)
Thu, 3 Apr 2003 00:59:09 +0100 (BST)


On Wed, 2 Apr 2003, Dave McCracken wrote:
> --On Wednesday, April 02, 2003 15:38:45 -0800 Andrew Morton
> <akpm@digeo.com> wrote:
>
> > But:
> >
> > + /* Double check to make sure the pte page hasn't been freed */
> > + if (!pmd_present(*pmd))
> > + goto out_unmap;
> > +
> > ==> munmap, pte page is freed, reallocated for pagecache, someone
> > happens to write the correct value into it.
> >
> > + if (page_to_pfn(page) != pte_pfn(*pte))
> > + goto out_unmap;
> > +
> > + if (addr)
> > + *addr = address;
> > +
>
> Oops. The pmd_present() check should be after the page_to_pfn() !=
> pte_pfn() check.

No, you're forgetting that the case Andrew rightly indicates is
covered by the ptecount check I added to page_convert_anon, and
commented at length there. As I said yesterday, I don't think
this "Double check" on *pmd serves any real purpose as coded
(whereas the earlier "Double check" on *pgd is vital).

Hugh

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