The root directory cluster field only exists in a FAT32 boot sector, so the
'root_cluster' variable in do_fat_read() contains garbage in case of FAT12/16.
Make it contain 0 instead as this is what is passed to get_vfatname() in that
case anyway.

Signed-off-by: Sergei Shtylyov <[email protected]>

---
Slight optimization atop of commit 3831530dcb7b71329c272ccd6181f8038b6a6dd0
(VFAT: fix processing of scattered long file name entries).

The patch was generated atop of the below patches posted earlier:
http://marc.info/?l=u-boot&m=131283284822789
http://marc.info/?l=u-boot&m=131283289722891

 fs/fat/fat.c |   14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

Index: u-boot/fs/fat/fat.c
===================================================================
--- u-boot.orig/fs/fat/fat.c
+++ u-boot/fs/fat/fat.c
@@ -788,7 +788,7 @@ do_fat_read (const char *filename, void 
        int files = 0, dirs = 0;
        long ret = -1;
        int firsttime;
-       __u32 root_cluster;
+       __u32 root_cluster = 0;
        int rootdir_size = 0;
        int j;
 
@@ -797,12 +797,12 @@ do_fat_read (const char *filename, void 
                return -1;
        }
 
-       root_cluster = bs.root_cluster;
-
-       if (mydata->fatsize == 32)
+       if (mydata->fatsize == 32) {
+               root_cluster = bs.root_cluster;
                mydata->fatlength = bs.fat32_length;
-       else
+       } else {
                mydata->fatlength = bs.fat_length;
+       }
 
        mydata->fat_sect = bs.reserved;
 
@@ -904,9 +904,7 @@ do_fat_read (const char *filename, void 
                                                ((dir_slot 
*)dentptr)->alias_checksum;
 
                                        get_vfatname(mydata,
-                                                    (mydata->fatsize == 32) ?
-                                                    root_cluster :
-                                                    0,
+                                                    root_cluster,
                                                     do_fat_read_block,
                                                     dentptr, l_name);
 
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to