Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9512164b authored by Kirill A. Shutemov's avatar Kirill A. Shutemov Committed by android-build-merger
Browse files

thp: fix another corner case of munlock() vs. THPs

am: 1771fc58

Change-Id: Ib24b4d9f9a51c22c36ca49ce28916992267e9400
parents 821079ce 1771fc58
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -441,7 +441,7 @@ void munlock_vma_pages_range(struct vm_area_struct *vma,

	while (start < end) {
		struct page *page;
		unsigned int page_mask;
		unsigned int page_mask = 0;
		unsigned long page_increm;
		struct pagevec pvec;
		struct zone *zone;
@@ -455,8 +455,7 @@ void munlock_vma_pages_range(struct vm_area_struct *vma,
		 * suits munlock very well (and if somehow an abnormal page
		 * has sneaked into the range, we won't oops here: great).
		 */
		page = follow_page_mask(vma, start, FOLL_GET | FOLL_DUMP,
				&page_mask);
		page = follow_page(vma, start, FOLL_GET | FOLL_DUMP);

		if (page && !IS_ERR(page)) {
			if (PageTransTail(page)) {
@@ -467,8 +466,8 @@ void munlock_vma_pages_range(struct vm_area_struct *vma,
				/*
				 * Any THP page found by follow_page_mask() may
				 * have gotten split before reaching
				 * munlock_vma_page(), so we need to recompute
				 * the page_mask here.
				 * munlock_vma_page(), so we need to compute
				 * the page_mask here instead.
				 */
				page_mask = munlock_vma_page(page);
				unlock_page(page);