• Wu, Josh's avatar
    fs/fat: correct FAT16/12 file finding in root dir · dd6d7967
    Wu, Josh authored
    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: default avatarJosh Wu <josh.wu@atmel.com>
    dd6d7967
Name
Last commit
Last update
..
cbfs Loading commit data...
cramfs Loading commit data...
ext4 Loading commit data...
fat Loading commit data...
jffs2 Loading commit data...
reiserfs Loading commit data...
sandbox Loading commit data...
ubifs Loading commit data...
yaffs2 Loading commit data...
zfs Loading commit data...
Makefile Loading commit data...
fs.c Loading commit data...