From 27d673fbbb79b1b829484ec127da59b45f623ebd Mon Sep 17 00:00:00 2001 From: Kirk McKusick Date: Tue, 27 Sep 2022 08:57:30 -0700 Subject: [PATCH] When taking a snapshot on a UFS/FFS filesystem, it must be mounted. The "update" mount option must be specified when the "snapshot" mount option is used. Return EINVAL if the "snapshot" option is specified without the "update" option also requested. Reported by: Robert Morris Reviewed by: kib PR: 265362 MFC after: 2 weeks Sponsored by: The FreeBSD Foundation --- sys/ufs/ffs/ffs_vfsops.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 4768d610b28..8f6e186b44b 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -413,8 +413,11 @@ ffs_mount(struct mount *mp) /* * If this is a snapshot request, take the snapshot. */ - if (mp->mnt_flag & MNT_SNAPSHOT) + if (mp->mnt_flag & MNT_SNAPSHOT) { + if ((mp->mnt_flag & MNT_UPDATE) == 0) + return (EINVAL); return (ffs_snapshot(mp, fspec)); + } /* * Must not call namei() while owning busy ref.