[U-Boot] [PATCH 1/2] fat: root directory cluster only makes sense for FAT32
Sergei Shtylyov
sshtylyov at ru.mvista.com
Fri Aug 19 21:32:34 CEST 2011
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 <sshtylyov at mvista.com>
---
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);
More information about the U-Boot
mailing list