[U-Boot] fat: Handle moved FAT32 root directory

Submitted by Romain Izard on June 10, 2011, 7:36 a.m.

Details

Message ID 1307691368-29196-1-git-send-email-romain.izard.pro@gmail.com
State Changes Requested
Delegated to: Tom Rini
Headers show

Commit Message

Romain Izard June 10, 2011, 7:36 a.m.
The default location of the root directory in a FAT32 partition is the
same as its location in a FAT12/16 partition. But a difference is that
in FAT32, it is possible for the root directory to move.

This fix ensures that the parsing uses the root directory location
stored in the PBR, instead of always using the default location.

Signed-off-by: Romain Izard <romain.izard.pro@gmail.com>
---
 fs/fat/fat.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

Patch hide | download patch | download mbox

diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index c450bf6..22d34d3 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -798,6 +798,8 @@  do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
 	if (mydata->fatsize == 32) {
 		mydata->data_begin = mydata->rootdir_sect -
 					(mydata->clust_size * 2);
+		cursect = mydata->data_begin +
+				(root_cluster * mydata->clust_size);
 	} else {
 		rootdir_size = ((bs.dir_entries[1]  * (int)256 +
 				 bs.dir_entries[0]) *