From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org
Cc: Sasha Levin <sashal@kernel.org>
Subject: Re: [PATCH 5.15.y 1/4] mm: drop the assumption that VM_SHARED always implies writable
Date: Wed, 30 Jul 2025 12:28:51 -0400 [thread overview]
Message-ID: <1753857086-c71206ad@stable.kernel.org> (raw)
In-Reply-To: <20250730015337.31730-2-isaacmanjarres@google.com>
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected.
No action required from the submitter.
The upstream commit SHA1 provided is correct: e8e17ee90eaf650c855adb0a3e5e965fd6692ff1
WARNING: Author mismatch between patch and upstream commit:
Backport author: Isaac J. Manjarres <isaacmanjarres@google.com>
Commit author: Lorenzo Stoakes <lstoakes@gmail.com>
Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Not found
6.1.y | Not found
Note: The patch differs from the upstream commit:
---
1: e8e17ee90eaf ! 1: 9f7ea48b09ac mm: drop the assumption that VM_SHARED always implies writable
@@ Metadata
## Commit message ##
mm: drop the assumption that VM_SHARED always implies writable
+ [ Upstream commit e8e17ee90eaf650c855adb0a3e5e965fd6692ff1 ]
+
Patch series "permit write-sealed memfd read-only shared mappings", v4.
The man page for fcntl() describing memfd file seals states the following
@@ Commit message
[1]:https://lore.kernel.org/all/20230324133646.16101dfa666f253c4715d965@linux-foundation.org/
[2]:https://bugzilla.kernel.org/show_bug.cgi?id=217238
-
This patch (of 3):
There is a general assumption that VMAs with the VM_SHARED flag set are
@@ Commit message
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Muchun Song <muchun.song@linux.dev>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+ Cc: stable@vger.kernel.org
+ [isaacmanjarres: resolved merge conflicts due to
+ due to refactoring that happened in upstream commit
+ 5de195060b2e ("mm: resolve faulty mmap_region() error path behaviour")]
+ Signed-off-by: Isaac J. Manjarres <isaacmanjarres@google.com>
## include/linux/fs.h ##
-@@ include/linux/fs.h: extern const struct address_space_operations empty_aops;
+@@ include/linux/fs.h: int pagecache_write_end(struct file *, struct address_space *mapping,
* It is also used to block modification of page cache contents through
* memory mappings.
* @gfp_mask: Memory allocation flags to use for allocating pages.
@@ include/linux/mm.h: static inline bool vma_is_accessible(struct vm_area_struct *
+ return is_shared_maywrite(vma->vm_flags);
+}
+
- static inline
- struct vm_area_struct *vma_find(struct vma_iterator *vmi, unsigned long max)
- {
+ #ifdef CONFIG_SHMEM
+ /*
+ * The vma_is_shmem is not inline because it is used only by slow
## kernel/fork.c ##
@@ kernel/fork.c: static __latent_entropy int dup_mmap(struct mm_struct *mm,
@@ mm/mmap.c: void vma_set_page_prot(struct vm_area_struct *vma)
mapping_unmap_writable(mapping);
flush_dcache_mmap_lock(mapping);
-@@ mm/mmap.c: static unsigned long count_vma_pages_range(struct mm_struct *mm,
- static void __vma_link_file(struct vm_area_struct *vma,
- struct address_space *mapping)
- {
-- if (vma->vm_flags & VM_SHARED)
-+ if (vma_is_shared_maywrite(vma))
- mapping_allow_writable(mapping);
-
- flush_dcache_mmap_lock(mapping);
-@@ mm/mmap.c: unsigned long mmap_region(struct file *file, unsigned long addr,
- vma->vm_pgoff = pgoff;
-
+@@ mm/mmap.c: static void __vma_link_file(struct vm_area_struct *vma)
if (file) {
-- if (vm_flags & VM_SHARED) {
-+ if (is_shared_maywrite(vm_flags)) {
- error = mapping_map_writable(file->f_mapping);
- if (error)
- goto free_vma;
-@@ mm/mmap.c: unsigned long mmap_region(struct file *file, unsigned long addr,
- mm->map_count++;
- if (vma->vm_file) {
- i_mmap_lock_write(vma->vm_file->f_mapping);
+ struct address_space *mapping = file->f_mapping;
+
- if (vma->vm_flags & VM_SHARED)
+ if (vma_is_shared_maywrite(vma))
- mapping_allow_writable(vma->vm_file->f_mapping);
+ mapping_allow_writable(mapping);
- flush_dcache_mmap_lock(vma->vm_file->f_mapping);
+ flush_dcache_mmap_lock(mapping);
@@ mm/mmap.c: unsigned long mmap_region(struct file *file, unsigned long addr,
+ return -EINVAL;
- /* Once vma denies write, undo our temporary denial count */
- unmap_writable:
-- if (file && vm_flags & VM_SHARED)
-+ if (file && is_shared_maywrite(vm_flags))
- mapping_unmap_writable(file->f_mapping);
- file = vma->vm_file;
- ksm_add_vma(vma);
-@@ mm/mmap.c: unsigned long mmap_region(struct file *file, unsigned long addr,
- unmap_region(mm, &vmi.mas, vma, prev, next, vma->vm_start,
- vma->vm_end, vma->vm_end, true);
- }
-- if (file && (vm_flags & VM_SHARED))
-+ if (file && is_shared_maywrite(vm_flags))
- mapping_unmap_writable(file->f_mapping);
- free_vma:
- vm_area_free(vma);
+ /* Map writable and ensure this isn't a sealed memfd. */
+- if (file && (vm_flags & VM_SHARED)) {
++ if (file && is_shared_maywrite(vm_flags)) {
+ int error = mapping_map_writable(file->f_mapping);
+
+ if (error)
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| 5.15 | Success | Success |
next prev parent reply other threads:[~2025-07-30 16:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-30 1:53 [PATCH 5.15.y 0/4] Backport series: "permit write-sealed memfd read-only shared mappings" Isaac J. Manjarres
2025-07-30 1:53 ` [PATCH 5.15.y 1/4] mm: drop the assumption that VM_SHARED always implies writable Isaac J. Manjarres
2025-07-30 16:28 ` Sasha Levin [this message]
2025-08-22 13:28 ` Patch "mm: drop the assumption that VM_SHARED always implies writable" has been added to the 5.15-stable tree gregkh
2025-07-30 1:53 ` [PATCH 5.15.y 2/4] mm: update memfd seal write check to include F_SEAL_WRITE Isaac J. Manjarres
2025-07-30 16:29 ` Sasha Levin
2025-08-22 13:28 ` Patch "mm: update memfd seal write check to include F_SEAL_WRITE" has been added to the 5.15-stable tree gregkh
2025-07-30 1:53 ` [PATCH 5.15.y 3/4] mm: reinstate ability to map write-sealed memfd mappings read-only Isaac J. Manjarres
2025-07-30 16:29 ` Sasha Levin
2025-08-22 13:28 ` Patch "mm: reinstate ability to map write-sealed memfd mappings read-only" has been added to the 5.15-stable tree gregkh
2025-07-30 1:53 ` [PATCH 5.15.y 4/4] selftests/memfd: add test for mapping write-sealed memfd read-only Isaac J. Manjarres
2025-07-30 16:29 ` Sasha Levin
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=1753857086-c71206ad@stable.kernel.org \
--to=sashal@kernel.org \
--cc=stable@vger.kernel.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.