From: Lorenzo Stoakes <lstoakes@gmail.com>
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>
Cc: Matthew Wilcox <willy@infradead.org>,
Mike Kravetz <mike.kravetz@oracle.com>,
Muchun Song <muchun.song@linux.dev>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>,
Andy Lutomirski <luto@amacapital.net>,
Lorenzo Stoakes <lstoakes@gmail.com>
Subject: [RFC PATCH 0/3] permit write-sealed memfd read-only shared mappings
Date: Mon, 3 Apr 2023 23:28:29 +0100 [thread overview]
Message-ID: <cover.1680560277.git.lstoakes@gmail.com> (raw)
This patch series is in two parts:-
1. Currently there are a number of places in the kernel where we assume
VM_SHARED implies that a mapping is writable. Let's be slightly less
strict and relax this restriction in the case that VM_MAYWRITE is not
set.
This should have no noticeable impact as the lack of VM_MAYWRITE implies
that the mapping can not be made writable via mprotect() or any other
means.
2. Align the behaviour of F_SEAL_WRITE and F_SEAL_FUTURE_WRITE on mmap().
The latter already clears the VM_MAYWRITE flag for a sealed read-only
mapping, we simply extend this to F_SEAL_WRITE too.
For this to have effect, we must also invoke call_mmap() before
mapping_map_writable().
As this is quite a fundamental change on the assumptions around VM_SHARED
and since this causes a visible change to userland (in permitting read-only
shared mappings on F_SEAL_WRITE mappings), I am putting forward as an RFC
to see if there is anything terribly wrong with it.
I suspect even if the patch series as a whole is unpalatable, there are
probably things we can salvage from it in any case.
Thanks to Andy Lutomirski who inspired the series!
Lorenzo Stoakes (3):
mm: drop the assumption that VM_SHARED always implies writable
mm: update seal_check_[future_]write() to include F_SEAL_WRITE as well
mm: perform the mapping_map_writable() check after call_mmap()
fs/hugetlbfs/inode.c | 2 +-
include/linux/fs.h | 4 ++--
include/linux/mm.h | 24 ++++++++++++++++++------
kernel/fork.c | 2 +-
mm/filemap.c | 2 +-
mm/madvise.c | 2 +-
mm/mmap.c | 22 +++++++++++-----------
mm/shmem.c | 2 +-
8 files changed, 36 insertions(+), 24 deletions(-)
--
2.40.0
next reply other threads:[~2023-04-03 22:28 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-03 22:28 Lorenzo Stoakes [this message]
2023-04-03 22:28 ` [RFC PATCH 1/3] mm: drop the assumption that VM_SHARED always implies writable Lorenzo Stoakes
2023-04-03 22:28 ` [RFC PATCH 2/3] mm: update seal_check_[future_]write() to include F_SEAL_WRITE as well Lorenzo Stoakes
2023-04-03 22:28 ` [RFC PATCH 3/3] mm: perform the mapping_map_writable() check after call_mmap() Lorenzo Stoakes
2023-04-21 9:06 ` Jan Kara
2023-04-21 21:15 ` Lorenzo Stoakes
2023-04-21 9:01 ` [RFC PATCH 0/3] permit write-sealed memfd read-only shared mappings Jan Kara
2023-04-21 21:23 ` Lorenzo Stoakes
2023-04-24 12:19 ` Jan Kara
2023-04-24 12:23 ` Lorenzo Stoakes
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=cover.1680560277.git.lstoakes@gmail.com \
--to=lstoakes@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luto@amacapital.net \
--cc=mike.kravetz@oracle.com \
--cc=muchun.song@linux.dev \
--cc=viro@zeniv.linux.org.uk \
--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.