diff options
Diffstat (limited to 'fs/hpfs/dnode.c')
| -rw-r--r-- | fs/hpfs/dnode.c | 174 | 
1 files changed, 84 insertions, 90 deletions
diff --git a/fs/hpfs/dnode.c b/fs/hpfs/dnode.c index 9b2ffadfc8c..1e0e2ac30fd 100644 --- a/fs/hpfs/dnode.c +++ b/fs/hpfs/dnode.c @@ -14,11 +14,11 @@ static loff_t get_pos(struct dnode *d, struct hpfs_dirent *fde)  	struct hpfs_dirent *de_end = dnode_end_de(d);  	int i = 1;  	for (de = dnode_first_de(d); de < de_end; de = de_next_de(de)) { -		if (de == fde) return ((loff_t) d->self << 4) | (loff_t)i; +		if (de == fde) return ((loff_t) le32_to_cpu(d->self) << 4) | (loff_t)i;  		i++;  	}  	printk("HPFS: get_pos: not_found\n"); -	return ((loff_t)d->self << 4) | (loff_t)1; +	return ((loff_t)le32_to_cpu(d->self) << 4) | (loff_t)1;  }  void hpfs_add_pos(struct inode *inode, loff_t *pos) @@ -130,29 +130,30 @@ static void set_last_pointer(struct super_block *s, struct dnode *d, dnode_secno  {  	struct hpfs_dirent *de;  	if (!(de = dnode_last_de(d))) { -		hpfs_error(s, "set_last_pointer: empty dnode %08x", d->self); +		hpfs_error(s, "set_last_pointer: empty dnode %08x", le32_to_cpu(d->self));  		return;  	}  	if (hpfs_sb(s)->sb_chk) {  		if (de->down) {  			hpfs_error(s, "set_last_pointer: dnode %08x has already last pointer %08x", -				d->self, de_down_pointer(de)); +				le32_to_cpu(d->self), de_down_pointer(de));  			return;  		} -		if (de->length != 32) { -			hpfs_error(s, "set_last_pointer: bad last dirent in dnode %08x", d->self); +		if (le16_to_cpu(de->length) != 32) { +			hpfs_error(s, "set_last_pointer: bad last dirent in dnode %08x", le32_to_cpu(d->self));  			return;  		}  	}  	if (ptr) { -		if ((d->first_free += 4) > 2048) { -			hpfs_error(s,"set_last_pointer: too long dnode %08x", d->self); -			d->first_free -= 4; +		d->first_free = cpu_to_le32(le32_to_cpu(d->first_free) + 4); +		if (le32_to_cpu(d->first_free) > 2048) { +			hpfs_error(s, "set_last_pointer: too long dnode %08x", le32_to_cpu(d->self)); +			d->first_free = cpu_to_le32(le32_to_cpu(d->first_free) - 4);  			return;  		} -		de->length = 36; +		de->length = cpu_to_le16(36);  		de->down = 1; -		*(dnode_secno *)((char *)de + 32) = ptr; +		*(dnode_secno *)((char *)de + 32) = cpu_to_le32(ptr);  	}  } @@ -168,7 +169,7 @@ struct hpfs_dirent *hpfs_add_de(struct super_block *s, struct dnode *d,  	for (de = dnode_first_de(d); de < de_end; de = de_next_de(de)) {  		int c = hpfs_compare_names(s, name, namelen, de->name, de->namelen, de->last);  		if (!c) { -			hpfs_error(s, "name (%c,%d) already exists in dnode %08x", *name, namelen, d->self); +			hpfs_error(s, "name (%c,%d) already exists in dnode %08x", *name, namelen, le32_to_cpu(d->self));  			return NULL;  		}  		if (c < 0) break; @@ -176,15 +177,14 @@ struct hpfs_dirent *hpfs_add_de(struct super_block *s, struct dnode *d,  	memmove((char *)de + d_size, de, (char *)de_end - (char *)de);  	memset(de, 0, d_size);  	if (down_ptr) { -		*(int *)((char *)de + d_size - 4) = down_ptr; +		*(dnode_secno *)((char *)de + d_size - 4) = cpu_to_le32(down_ptr);  		de->down = 1;  	} -	de->length = d_size; -	if (down_ptr) de->down = 1; +	de->length = cpu_to_le16(d_size);  	de->not_8x3 = hpfs_is_name_long(name, namelen);  	de->namelen = namelen;  	memcpy(de->name, name, namelen); -	d->first_free += d_size; +	d->first_free = cpu_to_le32(le32_to_cpu(d->first_free) + d_size);  	return de;  } @@ -194,25 +194,25 @@ static void hpfs_delete_de(struct super_block *s, struct dnode *d,  			   struct hpfs_dirent *de)  {  	if (de->last) { -		hpfs_error(s, "attempt to delete last dirent in dnode %08x", d->self); +		hpfs_error(s, "attempt to delete last dirent in dnode %08x", le32_to_cpu(d->self));  		return;  	} -	d->first_free -= de->length; -	memmove(de, de_next_de(de), d->first_free + (char *)d - (char *)de); +	d->first_free = cpu_to_le32(le32_to_cpu(d->first_free) - le16_to_cpu(de->length)); +	memmove(de, de_next_de(de), le32_to_cpu(d->first_free) + (char *)d - (char *)de);  }  static void fix_up_ptrs(struct super_block *s, struct dnode *d)  {  	struct hpfs_dirent *de;  	struct hpfs_dirent *de_end = dnode_end_de(d); -	dnode_secno dno = d->self; +	dnode_secno dno = le32_to_cpu(d->self);  	for (de = dnode_first_de(d); de < de_end; de = de_next_de(de))  		if (de->down) {  			struct quad_buffer_head qbh;  			struct dnode *dd;  			if ((dd = hpfs_map_dnode(s, de_down_pointer(de), &qbh))) { -				if (dd->up != dno || dd->root_dnode) { -					dd->up = dno; +				if (le32_to_cpu(dd->up) != dno || dd->root_dnode) { +					dd->up = cpu_to_le32(dno);  					dd->root_dnode = 0;  					hpfs_mark_4buffers_dirty(&qbh);  				} @@ -262,7 +262,7 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno,  			kfree(nname);  			return 1;  		} -	if (d->first_free + de_size(namelen, down_ptr) <= 2048) { +	if (le32_to_cpu(d->first_free) + de_size(namelen, down_ptr) <= 2048) {  		loff_t t;  		copy_de(de=hpfs_add_de(i->i_sb, d, name, namelen, down_ptr), new_de);  		t = get_pos(d, de); @@ -286,11 +286,11 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno,  		kfree(nname);  		return 1;  	}	 -	memcpy(nd, d, d->first_free); +	memcpy(nd, d, le32_to_cpu(d->first_free));  	copy_de(de = hpfs_add_de(i->i_sb, nd, name, namelen, down_ptr), new_de);  	for_all_poss(i, hpfs_pos_ins, get_pos(nd, de), 1);  	h = ((char *)dnode_last_de(nd) - (char *)nd) / 2 + 10; -	if (!(ad = hpfs_alloc_dnode(i->i_sb, d->up, &adno, &qbh1, 0))) { +	if (!(ad = hpfs_alloc_dnode(i->i_sb, le32_to_cpu(d->up), &adno, &qbh1))) {  		hpfs_error(i->i_sb, "unable to alloc dnode - dnode tree will be corrupted");  		hpfs_brelse4(&qbh);  		kfree(nd); @@ -313,20 +313,21 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno,  	down_ptr = adno;  	set_last_pointer(i->i_sb, ad, de->down ? de_down_pointer(de) : 0);  	de = de_next_de(de); -	memmove((char *)nd + 20, de, nd->first_free + (char *)nd - (char *)de); -	nd->first_free -= (char *)de - (char *)nd - 20; -	memcpy(d, nd, nd->first_free); +	memmove((char *)nd + 20, de, le32_to_cpu(nd->first_free) + (char *)nd - (char *)de); +	nd->first_free = cpu_to_le32(le32_to_cpu(nd->first_free) - ((char *)de - (char *)nd - 20)); +	memcpy(d, nd, le32_to_cpu(nd->first_free));  	for_all_poss(i, hpfs_pos_del, (loff_t)dno << 4, pos);  	fix_up_ptrs(i->i_sb, ad);  	if (!d->root_dnode) { -		dno = ad->up = d->up; +		ad->up = d->up; +		dno = le32_to_cpu(ad->up);  		hpfs_mark_4buffers_dirty(&qbh);  		hpfs_brelse4(&qbh);  		hpfs_mark_4buffers_dirty(&qbh1);  		hpfs_brelse4(&qbh1);  		goto go_up;  	} -	if (!(rd = hpfs_alloc_dnode(i->i_sb, d->up, &rdno, &qbh2, 0))) { +	if (!(rd = hpfs_alloc_dnode(i->i_sb, le32_to_cpu(d->up), &rdno, &qbh2))) {  		hpfs_error(i->i_sb, "unable to alloc dnode - dnode tree will be corrupted");  		hpfs_brelse4(&qbh);  		hpfs_brelse4(&qbh1); @@ -338,7 +339,7 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno,  	i->i_blocks += 4;  	rd->root_dnode = 1;  	rd->up = d->up; -	if (!(fnode = hpfs_map_fnode(i->i_sb, d->up, &bh))) { +	if (!(fnode = hpfs_map_fnode(i->i_sb, le32_to_cpu(d->up), &bh))) {  		hpfs_free_dnode(i->i_sb, rdno);  		hpfs_brelse4(&qbh);  		hpfs_brelse4(&qbh1); @@ -347,10 +348,11 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno,  		kfree(nname);  		return 1;  	} -	fnode->u.external[0].disk_secno = rdno; +	fnode->u.external[0].disk_secno = cpu_to_le32(rdno);  	mark_buffer_dirty(bh);  	brelse(bh); -	d->up = ad->up = hpfs_i(i)->i_dno = rdno; +	hpfs_i(i)->i_dno = rdno; +	d->up = ad->up = cpu_to_le32(rdno);  	d->root_dnode = ad->root_dnode = 0;  	hpfs_mark_4buffers_dirty(&qbh);  	hpfs_brelse4(&qbh); @@ -373,7 +375,7 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno,  int hpfs_add_dirent(struct inode *i,  		    const unsigned char *name, unsigned namelen, -		    struct hpfs_dirent *new_de, int cdepth) +		    struct hpfs_dirent *new_de)  {  	struct hpfs_inode_info *hpfs_inode = hpfs_i(i);  	struct dnode *d; @@ -403,7 +405,6 @@ int hpfs_add_dirent(struct inode *i,  		}  	}  	hpfs_brelse4(&qbh); -	if (!cdepth) hpfs_lock_creation(i->i_sb);  	if (hpfs_check_free_dnodes(i->i_sb, FREE_DNODES_ADD)) {  		c = 1;  		goto ret; @@ -411,7 +412,6 @@ int hpfs_add_dirent(struct inode *i,  	i->i_version++;  	c = hpfs_add_to_dnode(i, dno, name, namelen, new_de, 0);  	ret: -	if (!cdepth) hpfs_unlock_creation(i->i_sb);  	return c;  } @@ -437,9 +437,9 @@ static secno move_to_top(struct inode *i, dnode_secno from, dnode_secno to)  				return 0;  		if (!(dnode = hpfs_map_dnode(i->i_sb, dno, &qbh))) return 0;  		if (hpfs_sb(i->i_sb)->sb_chk) { -			if (dnode->up != chk_up) { +			if (le32_to_cpu(dnode->up) != chk_up) {  				hpfs_error(i->i_sb, "move_to_top: up pointer from %08x should be %08x, is %08x", -					dno, chk_up, dnode->up); +					dno, chk_up, le32_to_cpu(dnode->up));  				hpfs_brelse4(&qbh);  				return 0;  			} @@ -455,7 +455,7 @@ static secno move_to_top(struct inode *i, dnode_secno from, dnode_secno to)  		hpfs_brelse4(&qbh);  	}  	while (!(de = dnode_pre_last_de(dnode))) { -		dnode_secno up = dnode->up; +		dnode_secno up = le32_to_cpu(dnode->up);  		hpfs_brelse4(&qbh);  		hpfs_free_dnode(i->i_sb, dno);  		i->i_size -= 2048; @@ -474,8 +474,8 @@ static secno move_to_top(struct inode *i, dnode_secno from, dnode_secno to)  			hpfs_brelse4(&qbh);  			return 0;  		} -		dnode->first_free -= 4; -		de->length -= 4; +		dnode->first_free = cpu_to_le32(le32_to_cpu(dnode->first_free) - 4); +		de->length = cpu_to_le16(le16_to_cpu(de->length) - 4);  		de->down = 0;  		hpfs_mark_4buffers_dirty(&qbh);  		dno = up; @@ -483,12 +483,12 @@ static secno move_to_top(struct inode *i, dnode_secno from, dnode_secno to)  	t = get_pos(dnode, de);  	for_all_poss(i, hpfs_pos_subst, t, 4);  	for_all_poss(i, hpfs_pos_subst, t + 1, 5); -	if (!(nde = kmalloc(de->length, GFP_NOFS))) { +	if (!(nde = kmalloc(le16_to_cpu(de->length), GFP_NOFS))) {  		hpfs_error(i->i_sb, "out of memory for dirent - directory will be corrupted");  		hpfs_brelse4(&qbh);  		return 0;  	} -	memcpy(nde, de, de->length); +	memcpy(nde, de, le16_to_cpu(de->length));  	ddno = de->down ? de_down_pointer(de) : 0;  	hpfs_delete_de(i->i_sb, dnode, de);  	set_last_pointer(i->i_sb, dnode, ddno); @@ -517,11 +517,11 @@ static void delete_empty_dnode(struct inode *i, dnode_secno dno)  	try_it_again:  	if (hpfs_stop_cycles(i->i_sb, dno, &c1, &c2, "delete_empty_dnode")) return;  	if (!(dnode = hpfs_map_dnode(i->i_sb, dno, &qbh))) return; -	if (dnode->first_free > 56) goto end; -	if (dnode->first_free == 52 || dnode->first_free == 56) { +	if (le32_to_cpu(dnode->first_free) > 56) goto end; +	if (le32_to_cpu(dnode->first_free) == 52 || le32_to_cpu(dnode->first_free) == 56) {  		struct hpfs_dirent *de_end;  		int root = dnode->root_dnode; -		up = dnode->up; +		up = le32_to_cpu(dnode->up);  		de = dnode_first_de(dnode);  		down = de->down ? de_down_pointer(de) : 0;  		if (hpfs_sb(i->i_sb)->sb_chk) if (root && !down) { @@ -545,13 +545,13 @@ static void delete_empty_dnode(struct inode *i, dnode_secno dno)  				return;  			    }  			if ((d1 = hpfs_map_dnode(i->i_sb, down, &qbh1))) { -				d1->up = up; +				d1->up = cpu_to_le32(up);  				d1->root_dnode = 1;  				hpfs_mark_4buffers_dirty(&qbh1);  				hpfs_brelse4(&qbh1);  			}  			if ((fnode = hpfs_map_fnode(i->i_sb, up, &bh))) { -				fnode->u.external[0].disk_secno = down; +				fnode->u.external[0].disk_secno = cpu_to_le32(down);  				mark_buffer_dirty(bh);  				brelse(bh);  			} @@ -570,22 +570,22 @@ static void delete_empty_dnode(struct inode *i, dnode_secno dno)  		for_all_poss(i, hpfs_pos_subst, ((loff_t)dno << 4) | 1, ((loff_t)up << 4) | p);  		if (!down) {  			de->down = 0; -			de->length -= 4; -			dnode->first_free -= 4; +			de->length = cpu_to_le16(le16_to_cpu(de->length) - 4); +			dnode->first_free = cpu_to_le32(le32_to_cpu(dnode->first_free) - 4);  			memmove(de_next_de(de), (char *)de_next_de(de) + 4, -				(char *)dnode + dnode->first_free - (char *)de_next_de(de)); +				(char *)dnode + le32_to_cpu(dnode->first_free) - (char *)de_next_de(de));  		} else {  			struct dnode *d1;  			struct quad_buffer_head qbh1; -			*(dnode_secno *) ((void *) de + de->length - 4) = down; +			*(dnode_secno *) ((void *) de + le16_to_cpu(de->length) - 4) = down;  			if ((d1 = hpfs_map_dnode(i->i_sb, down, &qbh1))) { -				d1->up = up; +				d1->up = cpu_to_le32(up);  				hpfs_mark_4buffers_dirty(&qbh1);  				hpfs_brelse4(&qbh1);  			}  		}  	} else { -		hpfs_error(i->i_sb, "delete_empty_dnode: dnode %08x, first_free == %03x", dno, dnode->first_free); +		hpfs_error(i->i_sb, "delete_empty_dnode: dnode %08x, first_free == %03x", dno, le32_to_cpu(dnode->first_free));  		goto end;  	} @@ -596,18 +596,18 @@ static void delete_empty_dnode(struct inode *i, dnode_secno dno)  		struct quad_buffer_head qbh1;  		if (!de_next->down) goto endm;  		ndown = de_down_pointer(de_next); -		if (!(de_cp = kmalloc(de->length, GFP_NOFS))) { +		if (!(de_cp = kmalloc(le16_to_cpu(de->length), GFP_NOFS))) {  			printk("HPFS: out of memory for dtree balancing\n");  			goto endm;  		} -		memcpy(de_cp, de, de->length); +		memcpy(de_cp, de, le16_to_cpu(de->length));  		hpfs_delete_de(i->i_sb, dnode, de);  		hpfs_mark_4buffers_dirty(&qbh);  		hpfs_brelse4(&qbh);  		for_all_poss(i, hpfs_pos_subst, ((loff_t)up << 4) | p, 4);  		for_all_poss(i, hpfs_pos_del, ((loff_t)up << 4) | p, 1);  		if (de_cp->down) if ((d1 = hpfs_map_dnode(i->i_sb, de_down_pointer(de_cp), &qbh1))) { -			d1->up = ndown; +			d1->up = cpu_to_le32(ndown);  			hpfs_mark_4buffers_dirty(&qbh1);  			hpfs_brelse4(&qbh1);  		} @@ -635,7 +635,7 @@ static void delete_empty_dnode(struct inode *i, dnode_secno dno)  			struct hpfs_dirent *del = dnode_last_de(d1);  			dlp = del->down ? de_down_pointer(del) : 0;  			if (!dlp && down) { -				if (d1->first_free > 2044) { +				if (le32_to_cpu(d1->first_free) > 2044) {  					if (hpfs_sb(i->i_sb)->sb_chk >= 2) {  						printk("HPFS: warning: unbalanced dnode tree, see hpfs.txt 4 more info\n");  						printk("HPFS: warning: terminating balancing operation\n"); @@ -647,38 +647,38 @@ static void delete_empty_dnode(struct inode *i, dnode_secno dno)  					printk("HPFS: warning: unbalanced dnode tree, see hpfs.txt 4 more info\n");  					printk("HPFS: warning: goin'on\n");  				} -				del->length += 4; +				del->length = cpu_to_le16(le16_to_cpu(del->length) + 4);  				del->down = 1; -				d1->first_free += 4; +				d1->first_free = cpu_to_le32(le32_to_cpu(d1->first_free) + 4);  			}  			if (dlp && !down) { -				del->length -= 4; +				del->length = cpu_to_le16(le16_to_cpu(del->length) - 4);  				del->down = 0; -				d1->first_free -= 4; +				d1->first_free = cpu_to_le32(le32_to_cpu(d1->first_free) - 4);  			} else if (down) -				*(dnode_secno *) ((void *) del + del->length - 4) = down; +				*(dnode_secno *) ((void *) del + le16_to_cpu(del->length) - 4) = cpu_to_le32(down);  		} else goto endm; -		if (!(de_cp = kmalloc(de_prev->length, GFP_NOFS))) { +		if (!(de_cp = kmalloc(le16_to_cpu(de_prev->length), GFP_NOFS))) {  			printk("HPFS: out of memory for dtree balancing\n");  			hpfs_brelse4(&qbh1);  			goto endm;  		}  		hpfs_mark_4buffers_dirty(&qbh1);  		hpfs_brelse4(&qbh1); -		memcpy(de_cp, de_prev, de_prev->length); +		memcpy(de_cp, de_prev, le16_to_cpu(de_prev->length));  		hpfs_delete_de(i->i_sb, dnode, de_prev);  		if (!de_prev->down) { -			de_prev->length += 4; +			de_prev->length = cpu_to_le16(le16_to_cpu(de_prev->length) + 4);  			de_prev->down = 1; -			dnode->first_free += 4; +			dnode->first_free = cpu_to_le32(le32_to_cpu(dnode->first_free) + 4);  		} -		*(dnode_secno *) ((void *) de_prev + de_prev->length - 4) = ndown; +		*(dnode_secno *) ((void *) de_prev + le16_to_cpu(de_prev->length) - 4) = cpu_to_le32(ndown);  		hpfs_mark_4buffers_dirty(&qbh);  		hpfs_brelse4(&qbh);  		for_all_poss(i, hpfs_pos_subst, ((loff_t)up << 4) | (p - 1), 4);  		for_all_poss(i, hpfs_pos_subst, ((loff_t)up << 4) | p, ((loff_t)up << 4) | (p - 1));  		if (down) if ((d1 = hpfs_map_dnode(i->i_sb, de_down_pointer(de), &qbh1))) { -			d1->up = ndown; +			d1->up = cpu_to_le32(ndown);  			hpfs_mark_4buffers_dirty(&qbh1);  			hpfs_brelse4(&qbh1);  		} @@ -701,7 +701,6 @@ int hpfs_remove_dirent(struct inode *i, dnode_secno dno, struct hpfs_dirent *de,  {  	struct dnode *dnode = qbh->data;  	dnode_secno down = 0; -	int lock = 0;  	loff_t t;  	if (de->first || de->last) {  		hpfs_error(i->i_sb, "hpfs_remove_dirent: attempt to delete first or last dirent in dnode %08x", dno); @@ -710,11 +709,8 @@ int hpfs_remove_dirent(struct inode *i, dnode_secno dno, struct hpfs_dirent *de,  	}  	if (de->down) down = de_down_pointer(de);  	if (depth && (de->down || (de == dnode_first_de(dnode) && de_next_de(de)->last))) { -		lock = 1; -		hpfs_lock_creation(i->i_sb);  		if (hpfs_check_free_dnodes(i->i_sb, FREE_DNODES_DEL)) {  			hpfs_brelse4(qbh); -			hpfs_unlock_creation(i->i_sb);  			return 2;  		}  	} @@ -727,11 +723,9 @@ int hpfs_remove_dirent(struct inode *i, dnode_secno dno, struct hpfs_dirent *de,  		dnode_secno a = move_to_top(i, down, dno);  		for_all_poss(i, hpfs_pos_subst, 5, t);  		if (a) delete_empty_dnode(i, a); -		if (lock) hpfs_unlock_creation(i->i_sb);  		return !a;  	}  	delete_empty_dnode(i, dno); -	if (lock) hpfs_unlock_creation(i->i_sb);  	return 0;  } @@ -751,8 +745,8 @@ void hpfs_count_dnodes(struct super_block *s, dnode_secno dno, int *n_dnodes,  	ptr = 0;  	go_up:  	if (!(dnode = hpfs_map_dnode(s, dno, &qbh))) return; -	if (hpfs_sb(s)->sb_chk) if (odno && odno != -1 && dnode->up != odno) -		hpfs_error(s, "hpfs_count_dnodes: bad up pointer; dnode %08x, down %08x points to %08x", odno, dno, dnode->up); +	if (hpfs_sb(s)->sb_chk) if (odno && odno != -1 && le32_to_cpu(dnode->up) != odno) +		hpfs_error(s, "hpfs_count_dnodes: bad up pointer; dnode %08x, down %08x points to %08x", odno, dno, le32_to_cpu(dnode->up));  	de = dnode_first_de(dnode);  	if (ptr) while(1) {  		if (de->down) if (de_down_pointer(de) == ptr) goto process_de; @@ -776,7 +770,7 @@ void hpfs_count_dnodes(struct super_block *s, dnode_secno dno, int *n_dnodes,  	if (!de->first && !de->last && n_items) (*n_items)++;  	if ((de = de_next_de(de)) < dnode_end_de(dnode)) goto next_de;  	ptr = dno; -	dno = dnode->up; +	dno = le32_to_cpu(dnode->up);  	if (dnode->root_dnode) {  		hpfs_brelse4(&qbh);  		return; @@ -824,8 +818,8 @@ dnode_secno hpfs_de_as_down_as_possible(struct super_block *s, dnode_secno dno)  			return d;  	if (!(de = map_nth_dirent(s, d, 1, &qbh, NULL))) return dno;  	if (hpfs_sb(s)->sb_chk) -		if (up && ((struct dnode *)qbh.data)->up != up) -			hpfs_error(s, "hpfs_de_as_down_as_possible: bad up pointer; dnode %08x, down %08x points to %08x", up, d, ((struct dnode *)qbh.data)->up); +		if (up && le32_to_cpu(((struct dnode *)qbh.data)->up) != up) +			hpfs_error(s, "hpfs_de_as_down_as_possible: bad up pointer; dnode %08x, down %08x points to %08x", up, d, le32_to_cpu(((struct dnode *)qbh.data)->up));  	if (!de->down) {  		hpfs_brelse4(&qbh);  		return d; @@ -874,7 +868,7 @@ struct hpfs_dirent *map_pos_dirent(struct inode *inode, loff_t *posp,  	/* Going up */  	if (dnode->root_dnode) goto bail; -	if (!(up_dnode = hpfs_map_dnode(inode->i_sb, dnode->up, &qbh0))) +	if (!(up_dnode = hpfs_map_dnode(inode->i_sb, le32_to_cpu(dnode->up), &qbh0)))  		goto bail;  	end_up_de = dnode_end_de(up_dnode); @@ -882,16 +876,16 @@ struct hpfs_dirent *map_pos_dirent(struct inode *inode, loff_t *posp,  	for (up_de = dnode_first_de(up_dnode); up_de < end_up_de;  	     up_de = de_next_de(up_de)) {  		if (!(++c & 077)) hpfs_error(inode->i_sb, -			"map_pos_dirent: pos crossed dnode boundary; dnode = %08x", dnode->up); +			"map_pos_dirent: pos crossed dnode boundary; dnode = %08x", le32_to_cpu(dnode->up));  		if (up_de->down && de_down_pointer(up_de) == dno) { -			*posp = ((loff_t) dnode->up << 4) + c; +			*posp = ((loff_t) le32_to_cpu(dnode->up) << 4) + c;  			hpfs_brelse4(&qbh0);  			return de;  		}  	}  	hpfs_error(inode->i_sb, "map_pos_dirent: pointer to dnode %08x not found in parent dnode %08x", -		dno, dnode->up); +		dno, le32_to_cpu(dnode->up));  	hpfs_brelse4(&qbh0);  	bail: @@ -1017,17 +1011,17 @@ struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno,  		/*name2[15] = 0xff;*/  		name1len = 15; name2len = 256;  	} -	if (!(upf = hpfs_map_fnode(s, f->up, &bh))) { +	if (!(upf = hpfs_map_fnode(s, le32_to_cpu(f->up), &bh))) {  		kfree(name2);  		return NULL;  	}	  	if (!upf->dirflag) {  		brelse(bh); -		hpfs_error(s, "fnode %08x has non-directory parent %08x", fno, f->up); +		hpfs_error(s, "fnode %08x has non-directory parent %08x", fno, le32_to_cpu(f->up));  		kfree(name2);  		return NULL;  	} -	dno = upf->u.external[0].disk_secno; +	dno = le32_to_cpu(upf->u.external[0].disk_secno);  	brelse(bh);  	go_down:  	downd = 0; @@ -1049,7 +1043,7 @@ struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno,  		return NULL;  	}  	next_de: -	if (de->fnode == fno) { +	if (le32_to_cpu(de->fnode) == fno) {  		kfree(name2);  		return de;  	} @@ -1065,7 +1059,7 @@ struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno,  		goto go_down;  	}  	f: -	if (de->fnode == fno) { +	if (le32_to_cpu(de->fnode) == fno) {  		kfree(name2);  		return de;  	} @@ -1074,7 +1068,7 @@ struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno,  	if ((de = de_next_de(de)) < de_end) goto next_de;  	if (d->root_dnode) goto not_found;  	downd = dno; -	dno = d->up; +	dno = le32_to_cpu(d->up);  	hpfs_brelse4(qbh);  	if (hpfs_sb(s)->sb_chk)  		if (hpfs_stop_cycles(s, downd, &d1, &d2, "map_fnode_dirent #2")) {  |