diff options
Diffstat (limited to 'fs/ext4/ext4_common.c')
| -rw-r--r-- | fs/ext4/ext4_common.c | 14 | 
1 files changed, 10 insertions, 4 deletions
| diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index 323875fa9..f12b8056c 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -378,7 +378,6 @@ void ext4fs_update_parent_dentry(char *filename, int *p_ino, int file_type)  	struct ext_filesystem *fs = get_fs();  	/* directory entry */  	struct ext2_dirent *dir; -	char *ptr = NULL;  	char *temp_dir = NULL;  	zero_buffer = zalloc(fs->blksz); @@ -415,7 +414,6 @@ restart:  	if (ext4fs_log_journal(root_first_block_buffer, first_block_no_of_root))  		goto fail;  	dir = (struct ext2_dirent *)root_first_block_buffer; -	ptr = (char *)dir;  	totalbytes = 0;  	while (dir->direntlen > 0) {  		/* @@ -483,14 +481,12 @@ restart:  			break;  		dir = (struct ext2_dirent *)((char *)dir + templength); -		ptr = (char *)dir;  	}  	/* make a pointer ready for creating next directory entry */  	templength = dir->direntlen;  	totalbytes = totalbytes + templength;  	dir = (struct ext2_dirent *)((char *)dir + templength); -	ptr = (char *)dir;  	/* get the next available inode number */  	inodeno = ext4fs_get_new_inode_no(); @@ -1200,6 +1196,11 @@ static void alloc_double_indirect_block(struct ext2_inode *file_inode,  		status = ext4fs_devread(di_blockno_parent *  					fs->sect_perblk, 0,  					fs->blksz, (char *)di_parent_buffer); + +		if (!status) { +			printf("%s: Device read error!\n", __func__); +			goto fail; +		}  		memset(di_parent_buffer, '\0', fs->blksz);  		/* @@ -1227,6 +1228,11 @@ static void alloc_double_indirect_block(struct ext2_inode *file_inode,  						fs->sect_perblk, 0,  						fs->blksz,  						(char *)di_child_buff); + +			if (!status) { +				printf("%s: Device read error!\n", __func__); +				goto fail; +			}  			memset(di_child_buff, '\0', fs->blksz);  			/* filling of actual datablocks for each child */  			for (j = 0; j < (fs->blksz / sizeof(int)); j++) { |