aboutsummaryrefslogtreecommitdiffstats
path: root/mm/truncate.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/truncate.c')
-rw-r--r--mm/truncate.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/mm/truncate.c b/mm/truncate.c
index 6479ed2afc53..2330223841fb 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -530,9 +530,15 @@ unsigned long invalidate_mapping_pages(struct address_space *mapping,
530 } else if (PageTransHuge(page)) { 530 } else if (PageTransHuge(page)) {
531 index += HPAGE_PMD_NR - 1; 531 index += HPAGE_PMD_NR - 1;
532 i += HPAGE_PMD_NR - 1; 532 i += HPAGE_PMD_NR - 1;
533 /* 'end' is in the middle of THP */ 533 /*
534 if (index == round_down(end, HPAGE_PMD_NR)) 534 * 'end' is in the middle of THP. Don't
535 * invalidate the page as the part outside of
536 * 'end' could be still useful.
537 */
538 if (index > end) {
539 unlock_page(page);
535 continue; 540 continue;
541 }
536 } 542 }
537 543
538 ret = invalidate_inode_page(page); 544 ret = invalidate_inode_page(page);