From d5e3d722df790359942bb2a1163420d51101b522 Mon Sep 17 00:00:00 2001 From: Garrett Wollman Date: Tue, 19 Apr 2005 21:55:28 +0000 Subject: [PATCH] The size of a filesystem may be less than the size of the provider it resides on. Fix the special case of the filesystem fragment size not evenly dividing the size of the provider. Fixing the general case probably requires better superblock validation (left as an exercise to the reader). --- sys/geom/label/g_label_ufs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/geom/label/g_label_ufs.c b/sys/geom/label/g_label_ufs.c index d15cbec0471..1be6b853e3e 100644 --- a/sys/geom/label/g_label_ufs.c +++ b/sys/geom/label/g_label_ufs.c @@ -86,8 +86,8 @@ g_label_ufs_taste(struct g_consumer *cp, char *label, size_t size) } else if (fs->fs_magic == FS_UFS2_MAGIC) { G_LABEL_DEBUG(1, "UFS2 file system detected on %s.", pp->name); - if (fs->fs_size * fs->fs_fsize != - (int64_t)pp->mediasize) { + if (fs->fs_fsize <= 0 || + pp->mediasize / fs->fs_fsize != fs->fs_size) { g_free(fs); continue; }