Commit 380768f5 authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] affs endianness annotations

AFFS partially annotated - some fields of on-disk structures are never
used and while I'm reasonably sure that they ought to be big-endian, I'd
rather leave them alone for now; annotating them won't change the amount
of noise since nothing in the kernel ever accesses them. 
Signed-off-by: default avatarAl Viro <viro@parcelfarce.linux.org.uk>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 64d7cc85
...@@ -84,7 +84,8 @@ affs_remove_hash(struct inode *dir, struct buffer_head *rem_bh) ...@@ -84,7 +84,8 @@ affs_remove_hash(struct inode *dir, struct buffer_head *rem_bh)
{ {
struct super_block *sb; struct super_block *sb;
struct buffer_head *bh; struct buffer_head *bh;
u32 rem_ino, hash_ino, ino; u32 rem_ino, hash_ino;
__be32 ino;
int offset, retval; int offset, retval;
sb = dir->i_sb; sb = dir->i_sb;
...@@ -203,9 +204,9 @@ affs_remove_link(struct dentry *dentry) ...@@ -203,9 +204,9 @@ affs_remove_link(struct dentry *dentry)
while ((ino = be32_to_cpu(AFFS_TAIL(sb, bh)->link_chain)) != 0) { while ((ino = be32_to_cpu(AFFS_TAIL(sb, bh)->link_chain)) != 0) {
if (ino == link_ino) { if (ino == link_ino) {
ino = AFFS_TAIL(sb, link_bh)->link_chain; __be32 ino2 = AFFS_TAIL(sb, link_bh)->link_chain;
AFFS_TAIL(sb, bh)->link_chain = ino; AFFS_TAIL(sb, bh)->link_chain = ino2;
affs_adjust_checksum(bh, be32_to_cpu(ino) - link_ino); affs_adjust_checksum(bh, be32_to_cpu(ino2) - link_ino);
mark_buffer_dirty_inode(bh, inode); mark_buffer_dirty_inode(bh, inode);
retval = 0; retval = 0;
/* Fix the link count, if bh is a normal header block without links */ /* Fix the link count, if bh is a normal header block without links */
...@@ -341,12 +342,12 @@ affs_remove_header(struct dentry *dentry) ...@@ -341,12 +342,12 @@ affs_remove_header(struct dentry *dentry)
u32 u32
affs_checksum_block(struct super_block *sb, struct buffer_head *bh) affs_checksum_block(struct super_block *sb, struct buffer_head *bh)
{ {
u32 *ptr = (u32 *)bh->b_data; __be32 *ptr = (__be32 *)bh->b_data;
u32 sum; u32 sum;
int bsize; int bsize;
sum = 0; sum = 0;
for (bsize = sb->s_blocksize / sizeof(u32); bsize > 0; bsize--) for (bsize = sb->s_blocksize / sizeof(__be32); bsize > 0; bsize--)
sum += be32_to_cpu(*ptr++); sum += be32_to_cpu(*ptr++);
return sum; return sum;
} }
...@@ -359,9 +360,10 @@ affs_checksum_block(struct super_block *sb, struct buffer_head *bh) ...@@ -359,9 +360,10 @@ affs_checksum_block(struct super_block *sb, struct buffer_head *bh)
void void
affs_fix_checksum(struct super_block *sb, struct buffer_head *bh) affs_fix_checksum(struct super_block *sb, struct buffer_head *bh)
{ {
int cnt = sb->s_blocksize / sizeof(u32); int cnt = sb->s_blocksize / sizeof(__be32);
u32 *ptr = (u32 *)bh->b_data; __be32 *ptr = (__be32 *)bh->b_data;
u32 checksum, *checksumptr; u32 checksum;
__be32 *checksumptr;
checksumptr = ptr + 5; checksumptr = ptr + 5;
*checksumptr = 0; *checksumptr = 0;
...@@ -384,9 +386,9 @@ secs_to_datestamp(time_t secs, struct affs_date *ds) ...@@ -384,9 +386,9 @@ secs_to_datestamp(time_t secs, struct affs_date *ds)
minute = secs / 60; minute = secs / 60;
secs -= minute * 60; secs -= minute * 60;
ds->days = be32_to_cpu(days); ds->days = cpu_to_be32(days);
ds->mins = be32_to_cpu(minute); ds->mins = cpu_to_be32(minute);
ds->ticks = be32_to_cpu(secs * 50); ds->ticks = cpu_to_be32(secs * 50);
} }
mode_t mode_t
......
...@@ -72,7 +72,7 @@ affs_free_block(struct super_block *sb, u32 block) ...@@ -72,7 +72,7 @@ affs_free_block(struct super_block *sb, u32 block)
struct affs_bm_info *bm; struct affs_bm_info *bm;
struct buffer_head *bh; struct buffer_head *bh;
u32 blk, bmap, bit, mask, tmp; u32 blk, bmap, bit, mask, tmp;
u32 *data; __be32 *data;
pr_debug("AFFS: free_block(%u)\n", block); pr_debug("AFFS: free_block(%u)\n", block);
...@@ -97,7 +97,7 @@ affs_free_block(struct super_block *sb, u32 block) ...@@ -97,7 +97,7 @@ affs_free_block(struct super_block *sb, u32 block)
} }
mask = 1 << (bit & 31); mask = 1 << (bit & 31);
data = (u32 *)bh->b_data + bit / 32 + 1; data = (__be32 *)bh->b_data + bit / 32 + 1;
/* mark block free */ /* mark block free */
tmp = be32_to_cpu(*data); tmp = be32_to_cpu(*data);
...@@ -106,8 +106,8 @@ affs_free_block(struct super_block *sb, u32 block) ...@@ -106,8 +106,8 @@ affs_free_block(struct super_block *sb, u32 block)
*data = cpu_to_be32(tmp | mask); *data = cpu_to_be32(tmp | mask);
/* fix checksum */ /* fix checksum */
tmp = be32_to_cpu(*(u32 *)bh->b_data); tmp = be32_to_cpu(*(__be32 *)bh->b_data);
*(u32 *)bh->b_data = cpu_to_be32(tmp - mask); *(__be32 *)bh->b_data = cpu_to_be32(tmp - mask);
mark_buffer_dirty(bh); mark_buffer_dirty(bh);
sb->s_dirt = 1; sb->s_dirt = 1;
...@@ -149,7 +149,7 @@ affs_alloc_block(struct inode *inode, u32 goal) ...@@ -149,7 +149,7 @@ affs_alloc_block(struct inode *inode, u32 goal)
struct affs_sb_info *sbi; struct affs_sb_info *sbi;
struct affs_bm_info *bm; struct affs_bm_info *bm;
struct buffer_head *bh; struct buffer_head *bh;
u32 *data, *enddata; __be32 *data, *enddata;
u32 blk, bmap, bit, mask, mask2, tmp; u32 blk, bmap, bit, mask, mask2, tmp;
int i; int i;
...@@ -211,8 +211,8 @@ affs_alloc_block(struct inode *inode, u32 goal) ...@@ -211,8 +211,8 @@ affs_alloc_block(struct inode *inode, u32 goal)
/* find an unused block in this bitmap block */ /* find an unused block in this bitmap block */
bit = blk % sbi->s_bmap_bits; bit = blk % sbi->s_bmap_bits;
data = (u32 *)bh->b_data + bit / 32 + 1; data = (__be32 *)bh->b_data + bit / 32 + 1;
enddata = (u32 *)((u8 *)bh->b_data + sb->s_blocksize); enddata = (__be32 *)((u8 *)bh->b_data + sb->s_blocksize);
mask = ~0UL << (bit & 31); mask = ~0UL << (bit & 31);
blk &= ~31UL; blk &= ~31UL;
...@@ -228,8 +228,8 @@ affs_alloc_block(struct inode *inode, u32 goal) ...@@ -228,8 +228,8 @@ affs_alloc_block(struct inode *inode, u32 goal)
* if scan didn't start at 0, try next bmap * if scan didn't start at 0, try next bmap
*/ */
goto find_bmap; goto find_bmap;
} while (!(tmp = *data)); } while (!*data);
tmp = be32_to_cpu(tmp); tmp = be32_to_cpu(*data);
mask = ~0; mask = ~0;
find_bit: find_bit:
...@@ -251,8 +251,8 @@ affs_alloc_block(struct inode *inode, u32 goal) ...@@ -251,8 +251,8 @@ affs_alloc_block(struct inode *inode, u32 goal)
*data = cpu_to_be32(tmp & ~mask); *data = cpu_to_be32(tmp & ~mask);
/* fix checksum */ /* fix checksum */
tmp = be32_to_cpu(*(u32 *)bh->b_data); tmp = be32_to_cpu(*(__be32 *)bh->b_data);
*(u32 *)bh->b_data = cpu_to_be32(tmp + mask); *(__be32 *)bh->b_data = cpu_to_be32(tmp + mask);
mark_buffer_dirty(bh); mark_buffer_dirty(bh);
sb->s_dirt = 1; sb->s_dirt = 1;
...@@ -276,7 +276,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags) ...@@ -276,7 +276,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags)
{ {
struct affs_bm_info *bm; struct affs_bm_info *bm;
struct buffer_head *bmap_bh = NULL, *bh = NULL; struct buffer_head *bmap_bh = NULL, *bh = NULL;
u32 *bmap_blk; __be32 *bmap_blk;
u32 size, blk, end, offset, mask; u32 size, blk, end, offset, mask;
int i, res = 0; int i, res = 0;
struct affs_sb_info *sbi = AFFS_SB(sb); struct affs_sb_info *sbi = AFFS_SB(sb);
...@@ -304,7 +304,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags) ...@@ -304,7 +304,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags)
} }
memset(sbi->s_bitmap, 0, size); memset(sbi->s_bitmap, 0, size);
bmap_blk = (u32 *)sbi->s_root_bh->b_data; bmap_blk = (__be32 *)sbi->s_root_bh->b_data;
blk = sb->s_blocksize / 4 - 49; blk = sb->s_blocksize / 4 - 49;
end = blk + 25; end = blk + 25;
...@@ -340,7 +340,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags) ...@@ -340,7 +340,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags)
res = -EIO; res = -EIO;
goto out; goto out;
} }
bmap_blk = (u32 *)bmap_bh->b_data; bmap_blk = (__be32 *)bmap_bh->b_data;
blk = 0; blk = 0;
end = sb->s_blocksize / 4 - 1; end = sb->s_blocksize / 4 - 1;
} }
...@@ -354,23 +354,23 @@ int affs_init_bitmap(struct super_block *sb, int *flags) ...@@ -354,23 +354,23 @@ int affs_init_bitmap(struct super_block *sb, int *flags)
u32 old, new; u32 old, new;
/* Mark unused bits in the last word as allocated */ /* Mark unused bits in the last word as allocated */
old = be32_to_cpu(((u32 *)bh->b_data)[offset]); old = be32_to_cpu(((__be32 *)bh->b_data)[offset]);
new = old & mask; new = old & mask;
//if (old != new) { //if (old != new) {
((u32 *)bh->b_data)[offset] = cpu_to_be32(new); ((__be32 *)bh->b_data)[offset] = cpu_to_be32(new);
/* fix checksum */ /* fix checksum */
//new -= old; //new -= old;
//old = be32_to_cpu(*(u32 *)bh->b_data); //old = be32_to_cpu(*(__be32 *)bh->b_data);
//*(u32 *)bh->b_data = cpu_to_be32(old - new); //*(__be32 *)bh->b_data = cpu_to_be32(old - new);
//mark_buffer_dirty(bh); //mark_buffer_dirty(bh);
//} //}
/* correct offset for the bitmap count below */ /* correct offset for the bitmap count below */
//offset++; //offset++;
} }
while (++offset < sb->s_blocksize / 4) while (++offset < sb->s_blocksize / 4)
((u32 *)bh->b_data)[offset] = 0; ((__be32 *)bh->b_data)[offset] = 0;
((u32 *)bh->b_data)[0] = 0; ((__be32 *)bh->b_data)[0] = 0;
((u32 *)bh->b_data)[0] = cpu_to_be32(-affs_checksum_block(sb, bh)); ((__be32 *)bh->b_data)[0] = cpu_to_be32(-affs_checksum_block(sb, bh));
mark_buffer_dirty(bh); mark_buffer_dirty(bh);
/* recalculate bitmap count for last block */ /* recalculate bitmap count for last block */
......
...@@ -201,7 +201,7 @@ affs_write_inode(struct inode *inode, int unused) ...@@ -201,7 +201,7 @@ affs_write_inode(struct inode *inode, int unused)
return; return;
} }
tail = AFFS_TAIL(sb, bh); tail = AFFS_TAIL(sb, bh);
if (tail->stype == be32_to_cpu(ST_ROOT)) { if (tail->stype == cpu_to_be32(ST_ROOT)) {
secs_to_datestamp(inode->i_mtime.tv_sec,&AFFS_ROOT_TAIL(sb, bh)->root_change); secs_to_datestamp(inode->i_mtime.tv_sec,&AFFS_ROOT_TAIL(sb, bh)->root_change);
} else { } else {
tail->protect = cpu_to_be32(AFFS_I(inode)->i_protect); tail->protect = cpu_to_be32(AFFS_I(inode)->i_protect);
...@@ -396,7 +396,7 @@ affs_add_entry(struct inode *dir, struct inode *inode, struct dentry *dentry, s3 ...@@ -396,7 +396,7 @@ affs_add_entry(struct inode *dir, struct inode *inode, struct dentry *dentry, s3
AFFS_TAIL(sb, bh)->parent = cpu_to_be32(dir->i_ino); AFFS_TAIL(sb, bh)->parent = cpu_to_be32(dir->i_ino);
if (inode_bh) { if (inode_bh) {
u32 chain; __be32 chain;
chain = AFFS_TAIL(sb, inode_bh)->link_chain; chain = AFFS_TAIL(sb, inode_bh)->link_chain;
AFFS_TAIL(sb, bh)->original = cpu_to_be32(inode->i_ino); AFFS_TAIL(sb, bh)->original = cpu_to_be32(inode->i_ino);
AFFS_TAIL(sb, bh)->link_chain = chain; AFFS_TAIL(sb, bh)->link_chain = chain;
......
...@@ -44,7 +44,7 @@ affs_put_super(struct super_block *sb) ...@@ -44,7 +44,7 @@ affs_put_super(struct super_block *sb)
pr_debug("AFFS: put_super()\n"); pr_debug("AFFS: put_super()\n");
if (!(sb->s_flags & MS_RDONLY)) { if (!(sb->s_flags & MS_RDONLY)) {
AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->bm_flag = be32_to_cpu(1); AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->bm_flag = cpu_to_be32(1);
secs_to_datestamp(get_seconds(), secs_to_datestamp(get_seconds(),
&AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->disk_change); &AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->disk_change);
affs_fix_checksum(sb, sbi->s_root_bh); affs_fix_checksum(sb, sbi->s_root_bh);
...@@ -70,7 +70,7 @@ affs_write_super(struct super_block *sb) ...@@ -70,7 +70,7 @@ affs_write_super(struct super_block *sb)
// if (sbi->s_bitmap[i].bm_bh) { // if (sbi->s_bitmap[i].bm_bh) {
// if (buffer_dirty(sbi->s_bitmap[i].bm_bh)) { // if (buffer_dirty(sbi->s_bitmap[i].bm_bh)) {
// clean = 0; // clean = 0;
AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->bm_flag = be32_to_cpu(clean); AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->bm_flag = cpu_to_be32(clean);
secs_to_datestamp(get_seconds(), secs_to_datestamp(get_seconds(),
&AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->disk_change); &AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->disk_change);
affs_fix_checksum(sb, sbi->s_root_bh); affs_fix_checksum(sb, sbi->s_root_bh);
...@@ -387,7 +387,7 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -387,7 +387,7 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent)
printk(KERN_ERR "AFFS: Cannot read boot block\n"); printk(KERN_ERR "AFFS: Cannot read boot block\n");
goto out_error; goto out_error;
} }
chksum = be32_to_cpu(*(u32 *)boot_bh->b_data); chksum = be32_to_cpu(*(__be32 *)boot_bh->b_data);
brelse(boot_bh); brelse(boot_bh);
/* Dircache filesystems are compatible with non-dircache ones /* Dircache filesystems are compatible with non-dircache ones
......
...@@ -5,13 +5,13 @@ ...@@ -5,13 +5,13 @@
struct RigidDiskBlock { struct RigidDiskBlock {
u32 rdb_ID; u32 rdb_ID;
u32 rdb_SummedLongs; __be32 rdb_SummedLongs;
s32 rdb_ChkSum; s32 rdb_ChkSum;
u32 rdb_HostID; u32 rdb_HostID;
u32 rdb_BlockBytes; __be32 rdb_BlockBytes;
u32 rdb_Flags; u32 rdb_Flags;
u32 rdb_BadBlockList; u32 rdb_BadBlockList;
u32 rdb_PartitionList; __be32 rdb_PartitionList;
u32 rdb_FileSysHeaderList; u32 rdb_FileSysHeaderList;
u32 rdb_DriveInit; u32 rdb_DriveInit;
u32 rdb_Reserved1[6]; u32 rdb_Reserved1[6];
...@@ -45,17 +45,17 @@ struct RigidDiskBlock { ...@@ -45,17 +45,17 @@ struct RigidDiskBlock {
#define IDNAME_RIGIDDISK 0x5244534B /* "RDSK" */ #define IDNAME_RIGIDDISK 0x5244534B /* "RDSK" */
struct PartitionBlock { struct PartitionBlock {
u32 pb_ID; __be32 pb_ID;
u32 pb_SummedLongs; __be32 pb_SummedLongs;
s32 pb_ChkSum; s32 pb_ChkSum;
u32 pb_HostID; u32 pb_HostID;
u32 pb_Next; __be32 pb_Next;
u32 pb_Flags; u32 pb_Flags;
u32 pb_Reserved1[2]; u32 pb_Reserved1[2];
u32 pb_DevFlags; u32 pb_DevFlags;
u8 pb_DriveName[32]; u8 pb_DriveName[32];
u32 pb_Reserved2[15]; u32 pb_Reserved2[15];
u32 pb_Environment[17]; __be32 pb_Environment[17];
u32 pb_EReserved[15]; u32 pb_EReserved[15];
}; };
......
...@@ -80,14 +80,14 @@ affs_brelse(struct buffer_head *bh) ...@@ -80,14 +80,14 @@ affs_brelse(struct buffer_head *bh)
static inline void static inline void
affs_adjust_checksum(struct buffer_head *bh, u32 val) affs_adjust_checksum(struct buffer_head *bh, u32 val)
{ {
u32 tmp = be32_to_cpu(((u32 *)bh->b_data)[5]); u32 tmp = be32_to_cpu(((__be32 *)bh->b_data)[5]);
((u32 *)bh->b_data)[5] = cpu_to_be32(tmp - val); ((__be32 *)bh->b_data)[5] = cpu_to_be32(tmp - val);
} }
static inline void static inline void
affs_adjust_bitmapchecksum(struct buffer_head *bh, u32 val) affs_adjust_bitmapchecksum(struct buffer_head *bh, u32 val)
{ {
u32 tmp = be32_to_cpu(((u32 *)bh->b_data)[0]); u32 tmp = be32_to_cpu(((__be32 *)bh->b_data)[0]);
((u32 *)bh->b_data)[0] = cpu_to_be32(tmp - val); ((__be32 *)bh->b_data)[0] = cpu_to_be32(tmp - val);
} }
static inline void static inline void
...@@ -164,89 +164,89 @@ affs_unlock_ext(struct inode *inode) ...@@ -164,89 +164,89 @@ affs_unlock_ext(struct inode *inode)
#define AFFS_DATA(bh) (((struct affs_data_head *)(bh)->b_data)->data) #define AFFS_DATA(bh) (((struct affs_data_head *)(bh)->b_data)->data)
struct affs_date { struct affs_date {
u32 days; __be32 days;
u32 mins; __be32 mins;
u32 ticks; __be32 ticks;
}; };
struct affs_short_date { struct affs_short_date {
u16 days; __be16 days;
u16 mins; __be16 mins;
u16 ticks; __be16 ticks;
}; };
struct affs_root_head { struct affs_root_head {
u32 ptype; __be32 ptype;
u32 spare1; __be32 spare1;
u32 spare2; __be32 spare2;
u32 hash_size; __be32 hash_size;
u32 spare3; __be32 spare3;
u32 checksum; __be32 checksum;
u32 hashtable[1]; __be32 hashtable[1];
}; };
struct affs_root_tail { struct affs_root_tail {
u32 bm_flag; __be32 bm_flag;
u32 bm_blk[AFFS_ROOT_BMAPS]; __be32 bm_blk[AFFS_ROOT_BMAPS];
u32 bm_ext; __be32 bm_ext;
struct affs_date root_change; struct affs_date root_change;
u8 disk_name[32]; u8 disk_name[32];
u32 spare1; __be32 spare1;
u32 spare2; __be32 spare2;
struct affs_date disk_change; struct affs_date disk_change;
struct affs_date disk_create; struct affs_date disk_create;
u32 spare3; __be32 spare3;
u32 spare4; __be32 spare4;
u32 dcache; __be32 dcache;
u32 stype; __be32 stype;
}; };
struct affs_head { struct affs_head {
u32 ptype; __be32 ptype;
u32 key; __be32 key;
u32 block_count; __be32 block_count;
u32 spare1; __be32 spare1;
u32 first_data; __be32 first_data;
u32 checksum; __be32 checksum;
u32 table[1]; __be32 table[1];
}; };
struct affs_tail { struct affs_tail {
u32 spare1; __be32 spare1;
u16 uid; __be16 uid;
u16 gid; __be16 gid;
u32 protect; __be32 protect;
u32 size; __be32 size;
u8 comment[92]; u8 comment[92];
struct affs_date change; struct affs_date change;
u8 name[32]; u8 name[32];
u32 spare2; __be32 spare2;
u32 original; __be32 original;
u32 link_chain; __be32 link_chain;
u32 spare[5]; __be32 spare[5];
u32 hash_chain; __be32 hash_chain;
u32 parent; __be32 parent;
u32 extension; __be32 extension;
u32 stype; __be32 stype;
}; };
struct slink_front struct slink_front
{ {
u32 ptype; __be32 ptype;
u32 key; __be32 key;
u32 spare1[3]; __be32 spare1[3];
u32 checksum; __be32 checksum;
u8 symname[1]; /* depends on block size */ u8 symname[1]; /* depends on block size */
}; };
struct affs_data_head struct affs_data_head
{ {
u32 ptype; __be32 ptype;
u32 key; __be32 key;
u32 sequence; __be32 sequence;
u32 size; __be32 size;
u32 next; __be32 next;
u32 checksum; __be32 checksum;
u8 data[1]; /* depends on block size */ u8 data[1]; /* depends on block size */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment