All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Tatashin <pasha.tatashin@soleen.com>
To: pasha.tatashin@soleen.com, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, akpm@linux-foundation.org, vbabka@suse.cz,
	mhocko@suse.com, david@redhat.com, osalvador@suse.de,
	dan.j.williams@intel.com, sashal@kernel.org,
	tyhicks@linux.microsoft.com, iamjoonsoo.kim@lge.com,
	mike.kravetz@oracle.com, rostedt@goodmis.org, mingo@redhat.com,
	jgg@ziepe.ca, peterz@infradead.org, mgorman@suse.de,
	willy@infradead.org, rientjes@google.com, jhubbard@nvidia.com,
	linux-doc@vger.kernel.org, ira.weiny@intel.com,
	linux-kselftest@vger.kernel.org
Subject: [PATCH v5 08/14] mm/gup: do not allow zero page for pinned pages
Date: Mon, 18 Jan 2021 23:39:14 -0500	[thread overview]
Message-ID: <20210119043920.155044-9-pasha.tatashin@soleen.com> (raw)
In-Reply-To: <20210119043920.155044-1-pasha.tatashin@soleen.com>

Zero page should not be used for long term pinned pages. Once pages
are pinned their physical addresses cannot changed until they are unpinned.

Guarantee to always return real pages when they are pinned by adding
FOLL_WRITE.

Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
---
 mm/gup.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/mm/gup.c b/mm/gup.c
index 857b273e32ac..9a817652f501 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -1668,8 +1668,16 @@ static long __gup_longterm_locked(struct mm_struct *mm,
 	unsigned long flags = 0;
 	long rc;
 
-	if (gup_flags & FOLL_LONGTERM)
+	if (gup_flags & FOLL_LONGTERM) {
+		/*
+		 * We are long term pinning pages and their PA's should not
+		 * change until unpinned. Without FOLL_WRITE we might get zero
+		 * page which we do not want. Force creating normal
+		 * pages by adding FOLL_WRITE.
+		 */
+		gup_flags |= FOLL_WRITE;
 		flags = memalloc_pin_save();
+	}
 
 	rc = __get_user_pages_locked(mm, start, nr_pages, pages, vmas, NULL,
 				     gup_flags);
-- 
2.25.1


  parent reply	other threads:[~2021-01-19  4:49 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-19  4:39 [PATCH v5 00/14] prohibit pinning pages in ZONE_MOVABLE Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 01/14] mm/gup: don't pin migrated cma pages in movable zone Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 02/14] mm/gup: check every subpage of a compound page during isolation Pavel Tatashin
2021-01-19 18:05   ` Jason Gunthorpe
2021-01-19  4:39 ` [PATCH v5 03/14] mm/gup: return an error on migration failure Pavel Tatashin
2021-01-19 18:28   ` Jason Gunthorpe
2021-01-19  4:39 ` [PATCH v5 04/14] mm/gup: check for isolation errors Pavel Tatashin
2021-01-19 18:22   ` Jason Gunthorpe
2021-01-19 18:27     ` Pavel Tatashin
2021-01-19 18:27       ` Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 05/14] mm cma: rename PF_MEMALLOC_NOCMA to PF_MEMALLOC_PIN Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 06/14] mm: apply per-task gfp constraints in fast path Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 07/14] mm: honor PF_MEMALLOC_PIN for all movable pages Pavel Tatashin
2021-01-19  4:39 ` Pavel Tatashin [this message]
2021-01-19 18:30   ` [PATCH v5 08/14] mm/gup: do not allow zero page for pinned pages Jason Gunthorpe
2021-01-19 18:34     ` Pavel Tatashin
2021-01-19 18:34       ` Pavel Tatashin
2021-01-19 18:47       ` Jason Gunthorpe
2021-01-19 20:14         ` Pavel Tatashin
2021-01-19 20:14           ` Pavel Tatashin
2021-01-19 20:48           ` Pavel Tatashin
2021-01-19 20:48             ` Pavel Tatashin
2021-01-19 23:35           ` Jason Gunthorpe
2021-01-19  4:39 ` [PATCH v5 09/14] mm/gup: migrate pinned pages out of movable zone Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 10/14] memory-hotplug.rst: add a note about ZONE_MOVABLE and page pinning Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 11/14] mm/gup: change index type to long as it counts pages Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 12/14] mm/gup: longterm pin migration cleaup Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 13/14] selftests/vm: test flag is broken Pavel Tatashin
2021-01-19  4:39 ` [PATCH v5 14/14] selftests/vm: test faulting in kernel, and verify pinnable pages Pavel Tatashin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210119043920.155044-9-pasha.tatashin@soleen.com \
    --to=pasha.tatashin@soleen.com \
    --cc=akpm@linux-foundation.org \
    --cc=dan.j.williams@intel.com \
    --cc=david@redhat.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=ira.weiny@intel.com \
    --cc=jgg@ziepe.ca \
    --cc=jhubbard@nvidia.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=mhocko@suse.com \
    --cc=mike.kravetz@oracle.com \
    --cc=mingo@redhat.com \
    --cc=osalvador@suse.de \
    --cc=peterz@infradead.org \
    --cc=rientjes@google.com \
    --cc=rostedt@goodmis.org \
    --cc=sashal@kernel.org \
    --cc=tyhicks@linux.microsoft.com \
    --cc=vbabka@suse.cz \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.