Searched hist:dd6d7967dfa88bd51062a8afb004962d16006ecd (Results 1 – 1 of 1) sorted by relevance
| /rk3399_rockchip-uboot/fs/fat/ |
| H A D | fat_write.c | dd6d7967dfa88bd51062a8afb004962d16006ecd Thu May 08 08:14:07 UTC 2014 Wu, Josh <Josh.wu@atmel.com> fs/fat: correct FAT16/12 file finding in root dir
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@atmel.com>
|