func: static int CVE_2009_0746_VULN_make_indexed_dir(handle_t *handle, struct dentry struct inode *inode, struct buffer_head *bh) struct inode * dir = dentry -> d_parent -> d_inode ; struct buffer_head * bh2 ; struct dx_root * root ; struct ext4_dir_entry_2 * de , * de2 ; char * data1 , * top ; unsigned len ; int retval ; unsigned blocksize ; struct fake_dirent * fde ; blocksize = dir -> i_sb -> s_blocksize; retval = ext4_journal_get_write_access ( handle , bh ); if ( retval )  root = ( struct dx_root * ) bh -> b_data; bh2 = ext4_append ( handle , dir , & block , & retval ); if ( ! ( bh2 ) )  data1 = bh2 -> b_data; fde = & root -> dotdot; de = ( struct ext4_dir_entry_2 * ) ( ( char * ) fde + ext4_rec_len_from_disk ( fde -> rec_len ) ); len = ( ( char * ) root ) + blocksize - ( char * ) de; memcpy ( data1 , de , len ); de = ( struct ext4_dir_entry_2 * ) data1; top = data1 + len; while ( ( char * ) ( de2 = ext4_next_entry ( de ) ) < top )  de = de2; de -> rec_len = ext4_rec_len_to_disk ( data1 + blocksize - ( char * ) de ); de -> rec_len = ext4_rec_len_to_disk ( blocksize - EXT4_DIR_REC_LEN ( 2 ) ); if ( ! ( de ) )  return add_dirent_to_buf ( handle , dentry , inode , de , bh ) ; 