]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] fix endian problem in ext3 htree code
authorAndrew Morton <akpm@digeo.com>
Fri, 22 Nov 2002 03:31:24 +0000 (19:31 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Fri, 22 Nov 2002 03:31:24 +0000 (19:31 -0800)
Patch from Christopher Li <chrisl@vmware.com>

This little patch will fix two place in htree code which
forget the "cpu_to_le16" converting . This bug causes
incorrect record length on PPC.

Thanks Franz for report the problem.

fs/ext3/namei.c

index e1abbb5552c043996a7c8ff3ff1c7430b60df7c7..d4f3ebad4aa14c07721ef9c1255380036d0086c2 100644 (file)
@@ -1018,7 +1018,8 @@ dx_move_dirents(char *from, char *to, struct dx_map_entry *map, int count)
                struct ext3_dir_entry_2 *de = (struct ext3_dir_entry_2 *) (from + map->offs);
                rec_len = EXT3_DIR_REC_LEN(de->name_len);
                memcpy (to, de, rec_len);
-               ((struct ext3_dir_entry_2 *) to)->rec_len = rec_len;
+               ((struct ext3_dir_entry_2 *) to)->rec_len =
+                               cpu_to_le16(rec_len);
                de->inode = 0;
                map++;
                to += rec_len;
@@ -1039,7 +1040,7 @@ static struct ext3_dir_entry_2* dx_pack_dirents(char *base, int size)
                        rec_len = EXT3_DIR_REC_LEN(de->name_len);
                        if (de > to)
                                memmove(to, de, rec_len);
-                       to->rec_len = rec_len;
+                       to->rec_len = cpu_to_le16(rec_len);
                        prev = to;
                        to = (struct ext3_dir_entry_2 *) (((char *) to) + rec_len);
                }