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

Commit 4e1c1975 authored by Andi Kleen's avatar Andi Kleen
Browse files

Clean up __page_set_anon_rmap



Linus asked for a cleanup of __page_set_anon_rmap to make
it look more like the cleaner huge pages version.

Factor out the duplicated PageAnon check into a single check
at the beginning of the function.

Remove obsolete comments and rewrite them into standard English.

No functional changes.

Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
parent 6a90181c
Loading
Loading
Loading
Loading
+8 −17
Original line number Diff line number Diff line
@@ -781,9 +781,9 @@ void page_move_anon_rmap(struct page *page,

/**
 * __page_set_anon_rmap - set up new anonymous rmap
 * @page:	the page to add the mapping to
 * @vma:	the vm area in which the mapping is added
 * @address:	the user virtual address mapped
 * @page:	Page to add to rmap	
 * @vma:	VM area to add page to.
 * @address:	User virtual address of the mapping	
 * @exclusive:	the page is exclusively owned by the current process
 */
static void __page_set_anon_rmap(struct page *page,
@@ -793,25 +793,16 @@ static void __page_set_anon_rmap(struct page *page,

	BUG_ON(!anon_vma);

	if (PageAnon(page))
		return;

	/*
	 * If the page isn't exclusively mapped into this vma,
	 * we must use the _oldest_ possible anon_vma for the
	 * page mapping!
	 */
	if (!exclusive) {
		if (PageAnon(page))
			return;
	if (!exclusive)
		anon_vma = anon_vma->root;
	} else {
		/*
		 * In this case, swapped-out-but-not-discarded swap-cache
		 * is remapped. So, no need to update page->mapping here.
		 * We convice anon_vma poitned by page->mapping is not obsolete
		 * because vma->anon_vma is necessary to be a family of it.
		 */
		if (PageAnon(page))
			return;
	}

	anon_vma = (void *) anon_vma + PAGE_MAPPING_ANON;
	page->mapping = (struct address_space *) anon_vma;