summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2003-03-07 23:49:16 +0000
committermckusick <mckusick@FreeBSD.org>2003-03-07 23:49:16 +0000
commit9c654a63e65d1236e9e812cd0d11b05e98385da6 (patch)
tree2ad7886600e05db4da74d84b5bb40a9944b35e96 /sys/ufs
parent87f8be3c6a97613193679566f6c308c06ca884ba (diff)
downloadFreeBSD-src-9c654a63e65d1236e9e812cd0d11b05e98385da6.zip
FreeBSD-src-9c654a63e65d1236e9e812cd0d11b05e98385da6.tar.gz
Use the appropriate size when zeroing out the unused portion
of a snapshot's copy of a superblock. This patch fixes a panic when taking a snapshot of a 4096/512 filesystem. Reported by: Ian Freislich <ianf@za.uu.net> Sponsored by: DARPA & NAI Labs.
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index 653d5f8..a4585d3 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -352,9 +352,9 @@ restart:
bcopy(fs, copy_fs, fs->fs_sbsize);
if ((fs->fs_flags & (FS_UNCLEAN | FS_NEEDSFSCK)) == 0)
copy_fs->fs_clean = 1;
- if (fs->fs_sbsize < SBLOCKSIZE)
- bzero(&sbp->b_data[loc + fs->fs_sbsize],
- SBLOCKSIZE - fs->fs_sbsize);
+ size = fs->fs_bsize < SBLOCKSIZE ? fs->fs_bsize : SBLOCKSIZE;
+ if (fs->fs_sbsize < size)
+ bzero(&sbp->b_data[loc + fs->fs_sbsize], size - fs->fs_sbsize);
size = blkroundup(fs, fs->fs_cssize);
if (fs->fs_contigsumsize > 0)
size += fs->fs_ncg * sizeof(int32_t);
OpenPOWER on IntegriCloud