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

login
register
mail settings
Submitter Romain Izard
Date June 10, 2011, 7:36 a.m.
Message ID <1307691368-29196-1-git-send-email-romain.izard.pro@gmail.com>
Download mbox | patch
Permalink /patch/99854/
State Changes Requested
Delegated to: Tom Rini
Headers show

Comments

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

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]) *