diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-11-06 08:08:39 -1000 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-11-06 08:08:39 -1000 |
commit | 7758b206117dab9894f0bcb8333f8e4731c5065a (patch) | |
tree | 387d7052068fece78e7442d54ed3e63d535dc4f9 /fs | |
parent | b226d019836fbab759be8f62818851ee5cb0d9de (diff) | |
parent | 8b55572e51805184353ee7d587c720a51818fb82 (diff) | |
download | linux-stable-7758b206117dab9894f0bcb8333f8e4731c5065a.tar.gz linux-stable-7758b206117dab9894f0bcb8333f8e4731c5065a.tar.bz2 linux-stable-7758b206117dab9894f0bcb8333f8e4731c5065a.zip |
Merge tag 'tracefs-v6.12-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace
Pull tracefs fixes from Steven Rostedt:
"Fix tracefs mount options.
Commit 78ff64081949 ("vfs: Convert tracefs to use the new mount API")
broke the gid setting when set by fstab or other mount utility. It is
ignored when it is set. Fix the code so that it recognises the option
again and will honor the settings on mount at boot up.
Update the internal documentation and create a selftest to make sure
it doesn't break again in the future"
* tag 'tracefs-v6.12-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
tracing/selftests: Add tracefs mount options test
tracing: Document tracefs gid mount option
tracing: Fix tracefs mount options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/tracefs/inode.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c index 1748dff58c3b..cfc614c638da 100644 --- a/fs/tracefs/inode.c +++ b/fs/tracefs/inode.c @@ -392,6 +392,9 @@ static int tracefs_reconfigure(struct fs_context *fc) struct tracefs_fs_info *sb_opts = sb->s_fs_info; struct tracefs_fs_info *new_opts = fc->s_fs_info; + if (!new_opts) + return 0; + sync_filesystem(sb); /* structure copy of new mount options to sb */ *sb_opts = *new_opts; @@ -478,14 +481,17 @@ static int tracefs_fill_super(struct super_block *sb, struct fs_context *fc) sb->s_op = &tracefs_super_operations; sb->s_d_op = &tracefs_dentry_operations; - tracefs_apply_options(sb, false); - return 0; } static int tracefs_get_tree(struct fs_context *fc) { - return get_tree_single(fc, tracefs_fill_super); + int err = get_tree_single(fc, tracefs_fill_super); + + if (err) + return err; + + return tracefs_reconfigure(fc); } static void tracefs_free_fc(struct fs_context *fc) |