Author: jhb
Date: Wed Mar 15 18:23:32 2017
New Revision: 315323
URL: https://svnweb.freebsd.org/changeset/base/315323

Log:
  Use UMA_ALIGN_PTR instead of sizeof(void *) for zone alignment.
  
  uma_zcreate()'s alignment argument is supposed to be sizeof(foo) - 1,
  and uma.h provides a set of helper macros for common types.  Passing
  sizeof(void *) results in all of the members being misaligned triggering
  unaligned access faults on certain architectures (notably MIPS).
  
  Reported by:  brooks
  Obtained from:        CheriBSD
  MFC after:    3 days
  Sponsored by: DARPA / AFRL

Modified:
  head/sys/kern/vfs_lookup.c

Modified: head/sys/kern/vfs_lookup.c
==============================================================================
--- head/sys/kern/vfs_lookup.c  Wed Mar 15 18:15:30 2017        (r315322)
+++ head/sys/kern/vfs_lookup.c  Wed Mar 15 18:23:32 2017        (r315323)
@@ -153,7 +153,7 @@ nameiinit(void *dummy __unused)
        namei_zone = uma_zcreate("NAMEI", MAXPATHLEN, NULL, NULL, NULL, NULL,
            UMA_ALIGN_PTR, 0);
        nt_zone = uma_zcreate("rentr", sizeof(struct nameicap_tracker),
-           NULL, NULL, NULL, NULL, sizeof(void *), 0);
+           NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0);
        getnewvnode("crossmp", NULL, &crossmp_vnodeops, &vp_crossmp);
 }
 SYSINIT(vfs, SI_SUB_VFS, SI_ORDER_SECOND, nameiinit, NULL);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to