svn commit: r234036 - head/sys/ufs/ffs
Edward Tomasz Napierala
trasz at FreeBSD.org
Sun Apr 8 13:44:56 UTC 2012
Author: trasz
Date: Sun Apr 8 13:44:55 2012
New Revision: 234036
URL: http://svn.freebsd.org/changeset/base/234036
Log:
Fix panic in ffs_reload(), which may happen when read-only filesystem
gets resized and then reloaded.
Reviewed by: kib, mckusick (earlier version)
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/ufs/ffs/ffs_vfsops.c
Modified: head/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- head/sys/ufs/ffs/ffs_vfsops.c Sun Apr 8 11:09:08 2012 (r234035)
+++ head/sys/ufs/ffs/ffs_vfsops.c Sun Apr 8 13:44:55 2012 (r234036)
@@ -675,8 +675,14 @@ ffs_reload(struct mount *mp, struct thre
/*
* Step 3: re-read summary information from disk.
*/
- blks = howmany(fs->fs_cssize, fs->fs_fsize);
- space = fs->fs_csp;
+ size = fs->fs_cssize;
+ blks = howmany(size, fs->fs_fsize);
+ if (fs->fs_contigsumsize > 0)
+ size += fs->fs_ncg * sizeof(int32_t);
+ size += fs->fs_ncg * sizeof(u_int8_t);
+ free(fs->fs_csp, M_UFSMNT);
+ space = malloc((u_long)size, M_UFSMNT, M_WAITOK);
+ fs->fs_csp = space;
for (i = 0; i < blks; i += fs->fs_frag) {
size = fs->fs_bsize;
if (i + fs->fs_frag > blks)
More information about the svn-src-head
mailing list