svn commit: r324073 - head/sys/kern
John Baldwin
jhb at FreeBSD.org
Wed Sep 27 23:18:59 UTC 2017
Author: jhb
Date: Wed Sep 27 23:18:57 2017
New Revision: 324073
URL: https://svnweb.freebsd.org/changeset/base/324073
Log:
Use UMA_ALIGNOF() for name cache UMA zones.
This fixes kernel crashes due to misaligned accesses to the 64-bit
time_t embedded in struct namecache_ts in MIPS n32 kernels.
MFC after: 1 week
Sponsored by: DARPA / AFRL
Modified:
head/sys/kern/vfs_cache.c
Modified: head/sys/kern/vfs_cache.c
==============================================================================
--- head/sys/kern/vfs_cache.c Wed Sep 27 23:15:33 2017 (r324072)
+++ head/sys/kern/vfs_cache.c Wed Sep 27 23:18:57 2017 (r324073)
@@ -1754,16 +1754,20 @@ nchinit(void *dummy __unused)
cache_zone_small = uma_zcreate("S VFS Cache",
sizeof(struct namecache) + CACHE_PATH_CUTOFF + 1,
- NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_ZINIT);
+ NULL, NULL, NULL, NULL, UMA_ALIGNOF(struct namecache),
+ UMA_ZONE_ZINIT);
cache_zone_small_ts = uma_zcreate("STS VFS Cache",
sizeof(struct namecache_ts) + CACHE_PATH_CUTOFF + 1,
- NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_ZINIT);
+ NULL, NULL, NULL, NULL, UMA_ALIGNOF(struct namecache_ts),
+ UMA_ZONE_ZINIT);
cache_zone_large = uma_zcreate("L VFS Cache",
sizeof(struct namecache) + NAME_MAX + 1,
- NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_ZINIT);
+ NULL, NULL, NULL, NULL, UMA_ALIGNOF(struct namecache),
+ UMA_ZONE_ZINIT);
cache_zone_large_ts = uma_zcreate("LTS VFS Cache",
sizeof(struct namecache_ts) + NAME_MAX + 1,
- NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_ZINIT);
+ NULL, NULL, NULL, NULL, UMA_ALIGNOF(struct namecache_ts),
+ UMA_ZONE_ZINIT);
nchashtbl = hashinit(desiredvnodes * 2, M_VFSCACHE, &nchash);
ncbuckethash = cache_roundup_2(mp_ncpus * 64) - 1;
More information about the svn-src-head
mailing list