From: sashiko-bot@kernel.org
To: "Christian Brauner" <brauner@kernel.org>
Cc: dsterba@suse.cz, tytso@mit.edu,
"Joseph Qi" <joseph.qi@linux.alibaba.com>,
"Mark Fasheh" <mark@fasheh.com>,
"Joel Becker" <jlbec@evilplan.org>,
linux-ext4@vger.kernel.org
Subject: Re: [PATCH RFC 15/28] ocfs2: keep options that can't change on remount
Date: Mon, 12 Oct 2026 10:45:01 +0000 [thread overview]
Message-ID: <sashiko-outbox-167982@kernel.org> (raw)
In-Reply-To: <20261012-work-fs-sb_rdonly-v1-15-60743a3dc326@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] ocfs2: TOCTOU lost-update on mount options during concurrent remounts
--
commit 113bf3bcf65b6ea75a7b673818520d321b5bd39c
Author: Christian Brauner <brauner@kernel.org>
ocfs2: keep options that can't change on remount
This commit fixes ocfs2 remount to inherit current mount options so that
unspecified options are not dropped or reset. It copies the current
options into the fs_context during reconfigure initialization.
> diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
> index c62e389d4dd65..26041371a6667 100644
> --- a/fs/ocfs2/super.c
> +++ b/fs/ocfs2/super.c
> @@ -1213,6 +1213,20 @@ static int ocfs2_init_fs_context(struct fs_context *fc)
> mopt->resv_level = OCFS2_DEFAULT_RESV_LEVEL;
> mopt->dir_resv_level = -1;
>
> + /*
> + * Start out with the current options so that a remount only changes
> + * what it specifies. Emergency remount (sysrq u) passes no options at
> + * all, and the heartbeat and data mode can't change.
> + */
> + if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE) {
> + struct ocfs2_super *osb = OCFS2_SB(fc->root->d_sb);
> +
> + mopt->mount_opt = osb->s_mount_opt;
> + mopt->atime_quantum = osb->s_atime_quantum;
> + mopt->slot = osb->preferred_slot;
[Severity: Medium]
Can this lead to a TOCTOU lost-update on the mount options when multiple
remounts occur concurrently?
If two threads execute sys_mount() with MS_REMOUNT simultaneously, both can
invoke do_remount() and locklessly read the active osb->s_mount_opt into
mopt->mount_opt in ocfs2_init_fs_context() before either acquires the
s_umount lock.
Both threads will parse their distinct mount options into their separate
mopt instances. They then sequentially acquire s_umount and apply their
changes in ocfs2_reconfigure():
fs/ocfs2/super.c:ocfs2_reconfigure() {
...
if (!ret) {
/* Only save off the new mount options in case of a successful
* remount. */
osb->s_mount_opt = parsed_options->mount_opt;
osb->s_atime_quantum = parsed_options->atime_quantum;
osb->preferred_slot = parsed_options->slot;
...
}
Will the second thread unconditionally overwrite osb->s_mount_opt with its
parsed state and completely erase the first thread's updates?
Could this be avoided by using a mask to apply only explicitly specified
delta changes under s_umount instead of snapshotting and rewriting the
entire state?
> + mopt->user_stack = ocfs2_userspace_stack(osb);
> + }
> +
> fc->fs_private = mopt;
> fc->ops = &ocfs2_context_ops;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261012-work-fs-sb_rdonly-v1-0-60743a3dc326@kernel.org?part=15
next prev parent reply other threads:[~2026-10-12 10:45 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 10:20 [PATCH RFC 00/28] fs: don't set SB_RDONLY after filesystem errors Christian Brauner
2026-10-12 10:20 ` [PATCH RFC 01/28] ecryptfs: don't leak the inode when a lookup can't open the lower file Christian Brauner
2026-10-12 10:34 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 02/28] ecryptfs: fall back to a read-only " Christian Brauner
2026-10-12 10:32 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 03/28] ext2: don't set SB_RDONLY after filesystem errors Christian Brauner
2026-10-12 10:44 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 04/28] jfs: " Christian Brauner
2026-10-12 10:41 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 05/28] nilfs2: " Christian Brauner
2026-10-12 10:34 ` sashiko-bot
2026-10-13 16:01 ` Ryusuke Konishi
2026-10-12 10:20 ` [PATCH RFC 06/28] fat: " Christian Brauner
2026-10-12 10:37 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 07/28] exfat: keep the current mount options on remount Christian Brauner
2026-10-12 10:36 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 08/28] exfat: don't set SB_RDONLY after filesystem errors Christian Brauner
2026-10-12 10:35 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 09/28] hfs: don't set SB_RDONLY after MDB write errors Christian Brauner
2026-10-12 10:41 ` sashiko-bot
2026-10-12 22:57 ` [Jfs-discussion] " Viacheslav Dubeyko
2026-10-12 10:20 ` [PATCH RFC 10/28] hfsplus: don't set SB_RDONLY when creating the attributes tree Christian Brauner
2026-10-12 10:36 ` sashiko-bot
2026-10-12 22:34 ` [Jfs-discussion] " Viacheslav Dubeyko
2026-10-12 10:20 ` [PATCH RFC 11/28] affs: don't set SB_RDONLY after filesystem errors Christian Brauner
2026-10-12 10:41 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 12/28] ufs: " Christian Brauner
2026-10-12 10:39 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 13/28] hpfs: " Christian Brauner
2026-10-12 10:35 ` sashiko-bot
2026-10-12 10:20 ` [PATCH RFC 14/28] ntfs: " Christian Brauner
2026-10-12 10:45 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 15/28] ocfs2: keep options that can't change on remount Christian Brauner
2026-10-12 10:45 ` sashiko-bot [this message]
2026-10-12 10:21 ` [PATCH RFC 16/28] ocfs2: don't set SB_RDONLY after filesystem errors Christian Brauner
2026-10-12 10:59 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 17/28] zonefs: don't set SB_RDONLY after I/O errors Christian Brauner
2026-10-12 10:42 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 18/28] btrfs: check BTRFS_FS_STATE_RO instead of SB_RDONLY at runtime Christian Brauner
2026-10-12 10:53 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 19/28] btrfs: don't set SB_RDONLY after filesystem errors Christian Brauner
2026-10-12 11:05 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 20/28] gfs2: wait for a pending withdraw before remounting read-only Christian Brauner
2026-10-12 10:44 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 21/28] gfs2: don't set SB_RDONLY on withdraw Christian Brauner
2026-10-12 10:48 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 22/28] efivarfs: stop using SB_RDONLY for read-only efivar ops Christian Brauner
2026-10-12 10:52 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 23/28] ubifs: don't set SB_RDONLY after errors Christian Brauner
2026-10-12 11:05 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 24/28] selftests/filesystems: test filesystem errors while frozen Christian Brauner
2026-10-12 10:47 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 25/28] ext4: allow remounting read-only in the emergency state Christian Brauner
2026-10-12 10:49 ` sashiko-bot
2026-10-12 16:38 ` Jan Kara
2026-10-12 10:21 ` [PATCH RFC 26/28] selftests/filesystems: test ext4 remounts " Christian Brauner
2026-10-12 10:52 ` sashiko-bot
2026-10-12 10:21 ` [PATCH RFC 27/28] xfs: allow remounting read-only after a shutdown Christian Brauner
2026-10-12 10:55 ` sashiko-bot
2026-10-13 7:38 ` Christoph Hellwig
2026-10-12 10:21 ` [PATCH RFC 28/28] selftests/filesystems: test xfs remounts " Christian Brauner
2026-10-12 10:51 ` sashiko-bot
2026-10-13 7:40 ` Christoph Hellwig
2026-10-12 16:53 ` [PATCH RFC 00/28] fs: don't set SB_RDONLY after filesystem errors Jan Kara
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=sashiko-outbox-167982@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=brauner@kernel.org \
--cc=dsterba@suse.cz \
--cc=jlbec@evilplan.org \
--cc=joseph.qi@linux.alibaba.com \
--cc=linux-ext4@vger.kernel.org \
--cc=mark@fasheh.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=tytso@mit.edu \
/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