All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Geffon <bgeffon@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Axel Rasmussen <axelrasmussen@google.com>,
	Lokesh Gidra <lokeshgidra@google.com>,
	Mike Rapoport <rppt@linux.vnet.ibm.com>,
	Peter Xu <peterx@redhat.com>, Hugh Dickins <hughd@google.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Brian Geffon <bgeffon@google.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Andy Lutomirski <luto@amacapital.net>,
	Vlastimil Babka <vbabka@suse.cz>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Sonny Rao <sonnyrao@google.com>, Minchan Kim <minchan@kernel.org>,
	"Kirill A . Shutemov" <kirill@shutemov.name>,
	Dmitry Safonov <dima@arista.com>,
	Michael Kerrisk <mtk.manpages@gmail.com>,
	Alejandro Colomar <alx.manpages@gmail.com>
Subject: [PATCH v5 2/3] Revert "mremap: don't allow MREMAP_DONTUNMAP on special_mappings and aio"
Date: Tue, 23 Mar 2021 11:25:18 -0700	[thread overview]
Message-ID: <20210323182520.2712101-2-bgeffon@google.com> (raw)
In-Reply-To: <20210323182520.2712101-1-bgeffon@google.com>

This reverts commit cd544fd1dc9293c6702fab6effa63dac1cc67e99.

As discussed in [1] this commit was a no-op because the mapping type was
checked in vma_to_resize before move_vma is ever called. This meant that
vm_ops->mremap() would never be called on such mappings. Furthermore,
we've since expanded support of MREMAP_DONTUNMAP to non-anonymous
mappings, and these special mappings are still protected by the existing
check of !VM_DONTEXPAND and !VM_PFNMAP which will result in a -EINVAL.

1. https://lkml.org/lkml/2020/12/28/2340

Signed-off-by: Brian Geffon <bgeffon@google.com>
Acked-by: Hugh Dickins <hughd@google.com>
---
 arch/x86/kernel/cpu/resctrl/pseudo_lock.c | 2 +-
 fs/aio.c                                  | 5 +----
 include/linux/mm.h                        | 2 +-
 mm/mmap.c                                 | 6 +-----
 mm/mremap.c                               | 2 +-
 5 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
index e916646adc69..0daf2f1cf7a8 100644
--- a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
+++ b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
@@ -1458,7 +1458,7 @@ static int pseudo_lock_dev_release(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int pseudo_lock_dev_mremap(struct vm_area_struct *area, unsigned long flags)
+static int pseudo_lock_dev_mremap(struct vm_area_struct *area)
 {
 	/* Not supported */
 	return -EINVAL;
diff --git a/fs/aio.c b/fs/aio.c
index 1f32da13d39e..76ce0cc3ee4e 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -323,16 +323,13 @@ static void aio_free_ring(struct kioctx *ctx)
 	}
 }
 
-static int aio_ring_mremap(struct vm_area_struct *vma, unsigned long flags)
+static int aio_ring_mremap(struct vm_area_struct *vma)
 {
 	struct file *file = vma->vm_file;
 	struct mm_struct *mm = vma->vm_mm;
 	struct kioctx_table *table;
 	int i, res = -EINVAL;
 
-	if (flags & MREMAP_DONTUNMAP)
-		return -EINVAL;
-
 	spin_lock(&mm->ioctx_lock);
 	rcu_read_lock();
 	table = rcu_dereference(mm->ioctx_table);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 64a71bf20536..ecdc6e8dc5af 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -570,7 +570,7 @@ struct vm_operations_struct {
 	void (*close)(struct vm_area_struct * area);
 	/* Called any time before splitting to check if it's allowed */
 	int (*may_split)(struct vm_area_struct *area, unsigned long addr);
-	int (*mremap)(struct vm_area_struct *area, unsigned long flags);
+	int (*mremap)(struct vm_area_struct *area);
 	/*
 	 * Called by mprotect() to make driver-specific permission
 	 * checks before mprotect() is finalised.   The VMA must not
diff --git a/mm/mmap.c b/mm/mmap.c
index 3f287599a7a3..9d7651e4e1fe 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -3403,14 +3403,10 @@ static const char *special_mapping_name(struct vm_area_struct *vma)
 	return ((struct vm_special_mapping *)vma->vm_private_data)->name;
 }
 
-static int special_mapping_mremap(struct vm_area_struct *new_vma,
-				  unsigned long flags)
+static int special_mapping_mremap(struct vm_area_struct *new_vma)
 {
 	struct vm_special_mapping *sm = new_vma->vm_private_data;
 
-	if (flags & MREMAP_DONTUNMAP)
-		return -EINVAL;
-
 	if (WARN_ON_ONCE(current->mm != new_vma->vm_mm))
 		return -EFAULT;
 
diff --git a/mm/mremap.c b/mm/mremap.c
index db5b8b28c2dd..d22629ff8f3c 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -545,7 +545,7 @@ static unsigned long move_vma(struct vm_area_struct *vma,
 	if (moved_len < old_len) {
 		err = -ENOMEM;
 	} else if (vma->vm_ops && vma->vm_ops->mremap) {
-		err = vma->vm_ops->mremap(new_vma, flags);
+		err = vma->vm_ops->mremap(new_vma);
 	}
 
 	if (unlikely(err)) {
-- 
2.31.0.291.g576ba9dcdaf-goog


  reply	other threads:[~2021-03-23 18:26 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-03 17:52 [PATCH] mm: Allow shmem mappings with MREMAP_DONTUNMAP Brian Geffon
2021-03-03 17:52 ` Brian Geffon
2021-03-03 18:13 ` Brian Geffon
2021-03-03 18:13   ` Brian Geffon
2021-03-03 19:04   ` Lokesh Gidra
2021-03-03 19:04     ` Lokesh Gidra
2021-03-14  4:19 ` Hugh Dickins
2021-03-14  4:19   ` Hugh Dickins
2021-03-16 19:18   ` Brian Geffon
2021-03-16 19:18     ` Brian Geffon
2021-03-16 19:31     ` Dmitry Safonov
2021-03-16 20:17   ` Peter Xu
2021-03-19  1:58     ` Hugh Dickins
2021-03-19  1:58       ` Hugh Dickins
2021-03-17 19:13 ` [PATCH v2 1/2] mm: Allow non-VM_DONTEXPAND and VM_PFNMAP " Brian Geffon
2021-03-17 19:13   ` Brian Geffon
2021-03-17 19:13   ` [PATCH v2 2/2] Revert "mremap: don't allow MREMAP_DONTUNMAP on special_mappings and aio" Brian Geffon
2021-03-17 19:13     ` Brian Geffon
2021-03-17 20:40   ` [PATCH v2 1/2] mm: Allow non-VM_DONTEXPAND and VM_PFNMAP mappings with MREMAP_DONTUNMAP Peter Xu
2021-03-17 20:44     ` Brian Geffon
2021-03-17 20:44       ` Brian Geffon
2021-03-17 21:18       ` Peter Xu
2021-03-17 21:25         ` Brian Geffon
2021-03-17 21:25           ` Brian Geffon
2021-03-17 21:41 ` [PATCH v3 " Brian Geffon
2021-03-17 21:41   ` Brian Geffon
2021-03-17 21:41   ` [PATCH v3 2/2] Revert "mremap: don't allow MREMAP_DONTUNMAP on special_mappings and aio" Brian Geffon
2021-03-17 21:41     ` Brian Geffon
2021-03-19  1:28     ` Hugh Dickins
2021-03-19  1:28       ` Hugh Dickins
2021-03-17 22:03   ` [PATCH v3 1/2] mm: Allow non-VM_DONTEXPAND and VM_PFNMAP mappings with MREMAP_DONTUNMAP Andrew Morton
2021-03-19  1:20   ` Hugh Dickins
2021-03-19  1:20     ` Hugh Dickins
2021-03-23 16:26 ` [PATCH v4 1/3] mm: Extend MREMAP_DONTUNMAP to non-anonymous mappings Brian Geffon
2021-03-23 16:26   ` Brian Geffon
2021-03-23 16:26   ` [PATCH v4 2/3] Revert "mremap: don't allow MREMAP_DONTUNMAP on special_mappings and aio" Brian Geffon
2021-03-23 16:26     ` Brian Geffon
2021-03-23 18:16     ` Hugh Dickins
2021-03-23 18:16       ` Hugh Dickins
2021-03-23 18:26       ` Brian Geffon
2021-03-23 16:26   ` [PATCH v4 3/3] selftests: Add a MREMAP_DONTUNMAP selftest for shmem Brian Geffon
2021-03-23 16:26     ` Brian Geffon
2021-03-23 16:26   ` [PATCH] mremap.2: MREMAP_DONTUNMAP to reflect to supported mappings Brian Geffon
2021-03-23 16:26     ` Brian Geffon
2021-03-23 18:25 ` [PATCH v5 1/3] mm: Extend MREMAP_DONTUNMAP to non-anonymous mappings Brian Geffon
2021-03-23 18:25   ` Brian Geffon
2021-03-23 18:25   ` Brian Geffon [this message]
2021-03-23 18:25     ` [PATCH v5 2/3] Revert "mremap: don't allow MREMAP_DONTUNMAP on special_mappings and aio" Brian Geffon
2021-03-23 19:05     ` Dmitry Safonov
2021-03-23 18:25   ` [PATCH v5 3/3] selftests: Add a MREMAP_DONTUNMAP selftest for shmem Brian Geffon
2021-03-23 18:25     ` Brian Geffon
2021-03-23 18:25   ` [PATCH] mremap.2: MREMAP_DONTUNMAP to reflect to supported mappings Brian Geffon
2021-03-23 18:25     ` Brian Geffon
2021-03-25 21:34     ` Alejandro Colomar (man-pages)
2021-03-26 18:08       ` Brian Geffon
2021-03-26 18:08         ` Brian Geffon
2022-05-10 20:50         ` Brian Geffon
2021-03-23 19:04   ` [PATCH v5 1/3] mm: Extend MREMAP_DONTUNMAP to non-anonymous mappings Dmitry Safonov

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=20210323182520.2712101-2-bgeffon@google.com \
    --to=bgeffon@google.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=alx.manpages@gmail.com \
    --cc=axelrasmussen@google.com \
    --cc=dima@arista.com \
    --cc=hughd@google.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lokeshgidra@google.com \
    --cc=luto@amacapital.net \
    --cc=minchan@kernel.org \
    --cc=mst@redhat.com \
    --cc=mtk.manpages@gmail.com \
    --cc=peterx@redhat.com \
    --cc=rppt@linux.vnet.ibm.com \
    --cc=sonnyrao@google.com \
    --cc=vbabka@suse.cz \
    /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.