--- sys/fs/cd9660/cd9660_vnops.c.orig +++ sys/fs/cd9660/cd9660_vnops.c @@ -758,6 +758,9 @@ /* NOTREACHED */ } +_Static_assert(sizeof(struct ifid) <= sizeof(struct fid), + "struct ifid must be no larger than struct fid"); + /* * Vnode pointer to File handle */ --- sys/fs/cd9660/iso.h.orig +++ sys/fs/cd9660/iso.h @@ -267,7 +267,7 @@ u_short ifid_pad; cd_ino_t ifid_ino; long ifid_start; -}; +} __packed; #define VFSTOISOFS(mp) ((struct iso_mnt *)((mp)->mnt_data)) --- sys/fs/ext2fs/ext2_vnops.c.orig +++ sys/fs/ext2fs/ext2_vnops.c @@ -1889,6 +1889,8 @@ { struct inode *ip; struct ufid *ufhp; + _Static_assert(sizeof(struct ufid) <= sizeof(struct fid), + "struct ufid cannot be larger than struct fid"); ip = VTOI(ap->a_vp); ufhp = (struct ufid *)ap->a_fhp; --- sys/fs/ext2fs/inode.h.orig +++ sys/fs/ext2fs/inode.h @@ -191,7 +191,7 @@ uint16_t ufid_pad; /* Force 32-bit alignment. */ ino_t ufid_ino; /* File number (ino). */ uint32_t ufid_gen; /* Generation number. */ -}; +} __packed; #endif /* _KERNEL */ #endif /* !_FS_EXT2FS_INODE_H_ */