From: Christian Brauner <brauner@kernel.org>
To: Christoph Hellwig <hch@lst.de>,
linux-fsdevel@vger.kernel.org,
Seth Forshee <sforshee@digitalocean.com>
Cc: "Christian Brauner (Microsoft)" <brauner@kernel.org>,
Aleksa Sarai <cyphar@cyphar.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Al Viro <viro@zeniv.linux.org.uk>
Subject: [PATCH 0/8] introduce dedicated type for idmapped mounts
Date: Mon, 20 Jun 2022 15:49:39 +0200 [thread overview]
Message-ID: <20220620134947.2772863-1-brauner@kernel.org> (raw)
From: "Christian Brauner (Microsoft)" <brauner@kernel.org>
Hey everyone,
This series starts to introduce a new kmnt{g,u}id_t type. It allows to
distinguish {g,u}ids on idmapped mounts from filesystem k{g,u}ids.
We leverage the type framework to increase the safety for filesystems
and the vfs when dealing with idmapped mounts.
The series introduces the type and converts the setattr codepaths to
use the new type and associated helpers.
Currently these codepaths place the value that will ultimately be
written to inode->i_{g,u}id into attr->ia_{g,u}id which allows to avoid
changing a few callsites. But there are drawbacks to this approach.
As Linus rightly points out it makes some of the permission checks in
the attribute code harder to understand than they need and should be and
increases the probability for further issues.
This series makes it so that the values will always be treated as being
mapped into the idmapped mount. Only when the filesystem object is
actually updated will the value be mapped into the filesystem idmapping.
I first looked into this about ~7 months ago but put it on hold to focus
on the testsuite. Linus expressed the desire for something like this
last week so I got back to working on this.
Ideally I'd like to get at least this first series in for v5.20. The
conversion can the continue until we can remove all the regular non-type
safe helpers and will only be left with the type safe helpers.
Thanks!
Christian
Christian Brauner (8):
mnt_idmapping: add kmnt{g,u}id_t
fs: add two type safe mapping helpers
fs: use mount types in iattr
fs: introduce tiny iattr ownership update helpers
fs: port to iattr ownership update helpers
quota: port quota helpers mount ids
security: pass down mount idmapping to setattr hook
attr: port attribute changes to new types
fs/attr.c | 69 +++++------
fs/ext2/inode.c | 8 +-
fs/ext4/inode.c | 14 +--
fs/f2fs/file.c | 22 ++--
fs/f2fs/recovery.c | 2 +-
fs/fat/file.c | 7 +-
fs/jfs/file.c | 4 +-
fs/ocfs2/file.c | 2 +-
fs/open.c | 65 +++++++---
fs/overlayfs/copy_up.c | 4 +-
fs/overlayfs/overlayfs.h | 12 +-
fs/quota/dquot.c | 17 ++-
fs/reiserfs/inode.c | 4 +-
fs/xfs/xfs_iops.c | 11 +-
fs/zonefs/super.c | 2 +-
include/linux/evm.h | 6 +-
include/linux/fs.h | 135 ++++++++++++++++++++-
include/linux/mnt_idmapping.h | 195 ++++++++++++++++++++++++++++++
include/linux/quotaops.h | 15 ++-
include/linux/security.h | 8 +-
security/integrity/evm/evm_main.c | 12 +-
security/security.c | 5 +-
22 files changed, 488 insertions(+), 131 deletions(-)
base-commit: a111daf0c53ae91e71fd2bfe7497862d14132e3e
--
2.34.1
next reply other threads:[~2022-06-20 14:35 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-20 13:49 Christian Brauner [this message]
2022-06-20 13:49 ` [PATCH 1/8] mnt_idmapping: add kmnt{g,u}id_t Christian Brauner
2022-06-20 14:28 ` Linus Torvalds
2022-06-20 15:25 ` Christian Brauner
2022-06-20 18:52 ` Linus Torvalds
2022-06-20 13:49 ` [PATCH 2/8] fs: add two type safe mapping helpers Christian Brauner
2022-06-20 13:49 ` [PATCH 3/8] fs: use mount types in iattr Christian Brauner
2022-06-20 13:49 ` [PATCH 4/8] fs: introduce tiny iattr ownership update helpers Christian Brauner
2022-06-20 13:49 ` [PATCH 5/8] fs: port to " Christian Brauner
2022-06-20 13:49 ` [PATCH 6/8] quota: port quota helpers mount ids Christian Brauner
2022-06-21 10:20 ` Jan Kara
2022-06-21 10:40 ` Christian Brauner
2022-06-20 13:49 ` [PATCH 7/8] security: pass down mount idmapping to setattr hook Christian Brauner
2022-06-20 13:49 ` [PATCH 8/8] attr: port attribute changes to new types Christian Brauner
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=20220620134947.2772863-1-brauner@kernel.org \
--to=brauner@kernel.org \
--cc=cyphar@cyphar.com \
--cc=hch@lst.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=sforshee@digitalocean.com \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).