mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-17 12:41:32 +00:00
ext4: Do not crash when trying to grow a directory using extents
The following command crashes u-boot: ./sandbox/u-boot -c 'i=0; host bind 0 ./sandbox/test/fs/3GB.ext4.img ; while test $i -lt 200 ; do echo $i; setexpr i $i + 1; ext4write host 0 0 /foobar${i} 0; done' Previously, the code updated the direct_block even for extents, and fortunately crashed before pushing garbage to the disk. Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
This commit is contained in:
parent
a0d767e2c1
commit
b96c3c7292
1 changed files with 6 additions and 1 deletions
|
@ -453,8 +453,13 @@ restart:
|
|||
sizeof(struct ext2_dirent) + padding_factor;
|
||||
if ((fs->blksz - totalbytes - last_entry_dirlen) <
|
||||
new_entry_byte_reqd) {
|
||||
printf("1st Block Full:Allocate new block\n");
|
||||
printf("Last Block Full:Allocate new block\n");
|
||||
|
||||
if (le32_to_cpu(g_parent_inode->flags) &
|
||||
EXT4_EXTENTS_FL) {
|
||||
printf("Directory uses extents\n");
|
||||
goto fail;
|
||||
}
|
||||
if (direct_blk_idx == INDIRECT_BLOCKS - 1) {
|
||||
printf("Directory exceeds limit\n");
|
||||
goto fail;
|
||||
|
|
Loading…
Add table
Reference in a new issue