diff options
author | mckusick <mckusick@FreeBSD.org> | 2003-03-07 23:49:16 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 2003-03-07 23:49:16 +0000 |
commit | 9c654a63e65d1236e9e812cd0d11b05e98385da6 (patch) | |
tree | 2ad7886600e05db4da74d84b5bb40a9944b35e96 /sys/ufs | |
parent | 87f8be3c6a97613193679566f6c308c06ca884ba (diff) | |
download | FreeBSD-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.c | 6 |
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); |