diff --git a/mm/filemap.c b/mm/filemap.c index 8cec52968e83..29655fb47a2c 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2614,6 +2614,13 @@ void filemap_map_pages(struct vm_fault *vmf, goto next; head = compound_head(page); + + /* + * Check for a locked page first, as a speculative + * reference may adversely influence page migration. + */ + if (PageLocked(head)) + goto next; if (!page_cache_get_speculative(head)) goto next;