summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2008-03-05 16:34:03 +0000
committerkib <kib@FreeBSD.org>2008-03-05 16:34:03 +0000
commite378ea99349b36daa38977c06a93dade92ddd254 (patch)
treedab68cb42afedb3055a56186710dbda4808fa3c9 /sys
parente4e63c01cb0b400baed61ecd18fa2d974e301792 (diff)
downloadFreeBSD-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')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c1
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 */
OpenPOWER on IntegriCloud