Use __packed to prevent alignment from taking place, which otherwise may

change the on-disk format in an incompatible way.  Without this change,
msdosfs created on FreeBSD/arm would not be mountable.

PR:		bin/162486
Submitted by:	Ian Lepore <freebsd damnhippie dyndns org>
Reported by:	Mattia Rossi <mrossi at swin.edu.au>
MFC after:	3 days
This commit is contained in:
Xin LI 2011-11-11 20:31:48 +00:00
parent 804d7f5520
commit 658029e0d8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=227454

View File

@ -99,7 +99,7 @@ static const char rcsid[] =
struct bs { struct bs {
u_int8_t bsJump[3]; /* bootstrap entry point */ u_int8_t bsJump[3]; /* bootstrap entry point */
u_int8_t bsOemName[8]; /* OEM name and version */ u_int8_t bsOemName[8]; /* OEM name and version */
}; } __packed;
struct bsbpb { struct bsbpb {
u_int8_t bpbBytesPerSec[2]; /* bytes per sector */ u_int8_t bpbBytesPerSec[2]; /* bytes per sector */
@ -114,7 +114,7 @@ struct bsbpb {
u_int8_t bpbHeads[2]; /* drive heads */ u_int8_t bpbHeads[2]; /* drive heads */
u_int8_t bpbHiddenSecs[4]; /* hidden sectors */ u_int8_t bpbHiddenSecs[4]; /* hidden sectors */
u_int8_t bpbHugeSectors[4]; /* big total sectors */ u_int8_t bpbHugeSectors[4]; /* big total sectors */
}; } __packed;
struct bsxbpb { struct bsxbpb {
u_int8_t bpbBigFATsecs[4]; /* big sectors per FAT */ u_int8_t bpbBigFATsecs[4]; /* big sectors per FAT */
@ -124,7 +124,7 @@ struct bsxbpb {
u_int8_t bpbFSInfo[2]; /* file system info sector */ u_int8_t bpbFSInfo[2]; /* file system info sector */
u_int8_t bpbBackup[2]; /* backup boot sector */ u_int8_t bpbBackup[2]; /* backup boot sector */
u_int8_t bpbReserved[12]; /* reserved */ u_int8_t bpbReserved[12]; /* reserved */
}; } __packed;
struct bsx { struct bsx {
u_int8_t exDriveNumber; /* drive number */ u_int8_t exDriveNumber; /* drive number */
@ -133,7 +133,7 @@ struct bsx {
u_int8_t exVolumeID[4]; /* volume ID number */ u_int8_t exVolumeID[4]; /* volume ID number */
u_int8_t exVolumeLabel[11]; /* volume label */ u_int8_t exVolumeLabel[11]; /* volume label */
u_int8_t exFileSysType[8]; /* file system type */ u_int8_t exFileSysType[8]; /* file system type */
}; } __packed;
struct de { struct de {
u_int8_t deName[11]; /* name and extension */ u_int8_t deName[11]; /* name and extension */
@ -143,7 +143,7 @@ struct de {
u_int8_t deMDate[2]; /* creation date */ u_int8_t deMDate[2]; /* creation date */
u_int8_t deStartCluster[2]; /* starting cluster */ u_int8_t deStartCluster[2]; /* starting cluster */
u_int8_t deFileSize[4]; /* size */ u_int8_t deFileSize[4]; /* size */
}; } __packed;
struct bpb { struct bpb {
u_int bpbBytesPerSec; /* bytes per sector */ u_int bpbBytesPerSec; /* bytes per sector */