[U-Boot] [U-Boot, 3/3] fs/fat: correct FAT16/12 file finding in root dir

Tom Rini trini at ti.com
Tue May 13 03:54:42 CEST 2014


On Thu, May 08, 2014 at 04:14:07PM +0800, Wu, Josh wrote:

> When write a file into FAT file system, it will search a match file in
> root dir. So the find_directory_entry() will get the first cluster of
> root dir content and search the directory item one by one. If the file
> is not found, we will call get_fatent_value() to get next cluster of root
> dir via lookup the FAT table and continue the search.
> 
> The issue is in FAT16/12 system, we cannot get root dir's next clust
> from FAT table. The FAT table only be use to find the clust of data
> aera in FAT16/12.
> 
> In FAT16/12 if the clust is in root dir, the clust number is a negative
> number or 0, 1. Since root dir is located in front of the data area.
> Data area start clust #2. So the root dir clust number should < 2.
> 
> This patch will check above situation before call get_fatenv_value().
> If curclust is < 2, include minus number, we just increase one on the
> curclust since root dir is in continous cluster.
> 
> The patch also add a sanity check for entry in get_fatenv_value().
> 
> Signed-off-by: Josh Wu <josh.wu at atmel.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140512/26a53bfa/attachment.pgp>


More information about the U-Boot mailing list