Message ID | 20200710115805.4478-2-mszeredi@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/3] fuse: use ->reconfigure() instead of ->remount_fs() | expand |
Hi [This is an automated email] This commit has been processed because it contains a "Fixes:" tag fixing commit: c30da2e981a7 ("fuse: convert to use the new mount API"). The bot has tested the following trees: v5.7.8, v5.4.51. v5.7.8: Build OK! v5.4.51: Failed to apply! Possible dependencies: 7f5d38141e309 ("new primitive: __fs_parse()") 82995cc6c5ae4 ("libceph, rbd, ceph: convert to use the new mount API") d7167b149943e ("fs_parse: fold fs_parameter_desc/fs_parameter_spec") NOTE: The patch will not be queued to stable trees until it is upstream. How should we proceed with this patch?
On Thu, Jul 16, 2020 at 2:27 AM Sasha Levin <sashal@kernel.org> wrote: > > Hi > > [This is an automated email] > > This commit has been processed because it contains a "Fixes:" tag > fixing commit: c30da2e981a7 ("fuse: convert to use the new mount API"). > > The bot has tested the following trees: v5.7.8, v5.4.51. > > v5.7.8: Build OK! > v5.4.51: Failed to apply! Possible dependencies: > 7f5d38141e309 ("new primitive: __fs_parse()") > 82995cc6c5ae4 ("libceph, rbd, ceph: convert to use the new mount API") > d7167b149943e ("fs_parse: fold fs_parameter_desc/fs_parameter_spec") > > > NOTE: The patch will not be queued to stable trees until it is upstream. > > How should we proceed with this patch? Conflict resolution is trivial. Thanks, Miklos
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index be39dff57c28..ba201bf5ffad 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -477,6 +477,13 @@ static int fuse_parse_param(struct fs_context *fc, struct fs_parameter *param) struct fuse_fs_context *ctx = fc->fs_private; int opt; + /* + * Ignore options coming from mount(MS_REMOUNT) for backward + * compatibility. + */ + if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE) + return 0; + opt = fs_parse(fc, fuse_fs_parameters, param, &result); if (opt < 0) return opt;
The command mount -o remount -o unknownoption /mnt/fuse succeeds on kernel versions prior to v5.4 and fails on kernel version at or after. This is because fuse_parse_param() rejects any unrecognised options in case of FS_CONTEXT_FOR_RECONFIGURE, just as for FS_CONTEXT_FOR_MOUNT. This causes a regression in case the fuse filesystem is in fstab, since remount sends all options found there to the kernel; even ones that are meant for the initial mount and are consumed by the userspace fuse server. Fix this by ignoring mount options, just as fuse_remount_fs() did prior to the conversion to the new API. Reported-by: Stefan Priebe <s.priebe@profihost.ag> Fixes: c30da2e981a7 ("fuse: convert to use the new mount API") Cc: <stable@vger.kernel.org> # v5.4 Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> --- fs/fuse/inode.c | 7 +++++++ 1 file changed, 7 insertions(+)