diff options
author | kib <kib@FreeBSD.org> | 2008-03-05 16:34:03 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2008-03-05 16:34:03 +0000 |
commit | e378ea99349b36daa38977c06a93dade92ddd254 (patch) | |
tree | dab68cb42afedb3055a56186710dbda4808fa3c9 /sys/ufs/ffs | |
parent | e4e63c01cb0b400baed61ecd18fa2d974e301792 (diff) | |
download | FreeBSD-src-e378ea99349b36daa38977c06a93dade92ddd254.zip FreeBSD-src-e378ea99349b36daa38977c06a93dade92ddd254.tar.gz |
Initialize mnt_stat.f_iosize before autostarting UFS1 extattrs.
It is normally initialized by ffs_statfs() after ffs_mount finished.
The extattr autostart code calls the ufs_lookup(), that uses value above
to iterate over the directory blocks, see bmask initialization in the
ufs_lookup() and ufsdirhash. Having the filesystem with root directory
spanning more then one block would result in reading a random kernel
memory.
PR: kern/120781
Test case provided by: rwatson
MFC after: 1 week
Diffstat (limited to 'sys/ufs/ffs')
-rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 150a5b4d..6a1dce3 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -880,6 +880,7 @@ ffs_mountfs(devvp, mp, td) * This would all happen while the filesystem was busy/not * available, so would effectively be "atomic". */ + mp->mnt_stat.f_iosize = fs->fs_bsize; (void) ufs_extattr_autostart(mp, td); #endif /* !UFS_EXTATTR_AUTOSTART */ #endif /* !UFS_EXTATTR */ |