From: Christian Brauner <brauner@kernel.org>
To: linux-fsdevel@vger.kernel.org
Cc: Alexander Viro <viro@zeniv.linux.org.uk>, Jan Kara <jack@suse.cz>,
Miklos Szeredi <mszeredi@redhat.com>,
Jeff Layton <jlayton@kernel.org>, shaos <shawnq1@163.com>,
linux-kernel@vger.kernel.org, stable@vger.kernel.org,
"Christian Brauner (Amutable)" <brauner@kernel.org>
Subject: [PATCH 0/6] fs: fixes for statmount() short buffers and listmount()/listns() cursors
Date: Wed, 21 Oct 2026 13:46:53 +0200 [thread overview]
Message-ID: <20261021-work-mount-statmount_listns_fixes-v1-0-8917a4c1bd14@kernel.org> (raw)
shaos reported two issues in [1] and [2]. Both are real.
- statmount() reserves the empty string in the seq buffer before a
handler runs but the early return for "nothing emitted" never checks
that byte against the caller's buffer. So ask for STATMOUNT_MNT_UIDMAP
on a mount that isn't idmapped with a buffer smaller than struct
statmount and we write one zero byte past the buffer. It's the
caller's own memory but that's still not ok. I'm fixing this in
prepare_kstatmount() where the exact-size check already lives so that
unset strings keep pointing at an empty string.
- listmount() and listns() add one to the cursor before they look up
the next entry. With U64_MAX that wraps to zero and the listing starts
over. No real cursor can ever be U64_MAX so this only bites callers
that make up cursors but it's still wrong.
All three come with selftests. I've tagged the two cursor fixes for
stable as well since they're trivial but I don't feel strongly about
that.
[1]: https://lore.kernel.org/r/20261020110747.959829-1-shawnq1@163.com
[2]: https://lore.kernel.org/r/20261020110732.959552-1-shawnq1@163.com
---
Christian Brauner (6):
statmount: don't copy the reserved empty string past the buffer
selftests/filesystems: check short buffers for statmount() strings
listmount: don't wrap around with a U64_MAX cursor
selftests/filesystems: check listmount() with a U64_MAX cursor
listns: don't wrap around with a U64_MAX cursor
selftests/namespaces: check listns() with a U64_MAX cursor
fs/namespace.c | 5 +-
kernel/nstree.c | 29 ++++------
.../filesystems/statmount/listmount_test.c | 11 ++++
.../filesystems/statmount/statmount_test.c | 61 +++++++++++++++++++++-
tools/testing/selftests/namespaces/listns_test.c | 34 ++++++++++++
5 files changed, 120 insertions(+), 20 deletions(-)
---
base-commit: 08a7d685fc611140f5d4244abef522b71900c563
change-id: 20261021-work-mount-statmount_listns_fixes-03b0604d7341
next reply other threads:[~2026-10-21 11:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 11:46 Christian Brauner [this message]
2026-10-21 11:46 ` [PATCH 1/6] statmount: don't copy the reserved empty string past the buffer Christian Brauner
2026-10-21 11:52 ` Jeff Layton
2026-10-21 15:18 ` Jan Kara
2026-10-21 11:46 ` [PATCH 2/6] selftests/filesystems: check short buffers for statmount() strings Christian Brauner
2026-10-21 11:46 ` [PATCH 3/6] listmount: don't wrap around with a U64_MAX cursor Christian Brauner
2026-10-21 11:52 ` Jeff Layton
2026-10-21 15:25 ` Jan Kara
2026-10-21 11:46 ` [PATCH 4/6] selftests/filesystems: check listmount() " Christian Brauner
2026-10-21 11:46 ` [PATCH 5/6] listns: don't wrap around " Christian Brauner
2026-10-21 11:55 ` Jeff Layton
2026-10-21 15:29 ` Jan Kara
2026-10-21 11:46 ` [PATCH 6/6] selftests/namespaces: check listns() " Christian Brauner
2026-10-21 13:18 ` [PATCH 0/6] fs: fixes for statmount() short buffers and listmount()/listns() cursors 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=20261021-work-mount-statmount_listns_fixes-v1-0-8917a4c1bd14@kernel.org \
--to=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=jlayton@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mszeredi@redhat.com \
--cc=shawnq1@163.com \
--cc=stable@vger.kernel.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
all inboxes | Powered by JetHome®