/** When a device_private page is freed, the page->mapping field* may still contain a (stale) mapping value. For example, the* lower bits of page->mapping may still identify the page as* an anonymous page. Ultimately, this entire field is just* stale and wrong, and it will cause errors if not cleared.* One example is:** migrate_vma_pages()* migrate_vma_insert_page()* page_add_new_anon_rmap()* __page_set_anon_rmap()* ...checks page->mapping, via PageAnon(page) call,* and incorrectly concludes that the page is an* anonymous page. Therefore, it incorrectly,* silently fails to set up the new anon rmap.** For other types of ZONE_DEVICE pages, migration is either* handled differently or not done at all, so there is no need* to clear page->mapping.*/if (is_device_private_page(page))page->mapping = NULL;
Thanks, especially for the long comment.
Reviewed-by: Christoph Hellwig hch@lst.de