func: static int CVE_2014_5471_PATCHED_isofs_read_inode(struct inode *inode, int relocated) unsigned long bufsize = ISOFS_BUFFER_SIZE ( inode ) ; unsigned long block ; struct iso_directory_record * de ; unsigned int de_len ; unsigned long offset ; struct iso_inode_info * ei = ISOFS_I ( inode ) ; block = ei -> i_iget5_block; bh = sb_bread ( inode -> i_sb , block ); if ( ! bh )  offset = ei -> i_iget5_offset; de = ( struct iso_directory_record * ) ( bh -> b_data + offset ); de_len = * ( unsigned char * ) de; if ( offset + de_len > bufsize )  int frag1 = bufsize - offset ; tmpde = kmalloc ( de_len , GFP_KERNEL ); if ( tmpde == NULL )  memcpy ( tmpde , bh -> b_data + offset , frag1 ); memcpy ( ( char * ) tmpde + frag1 , bh -> b_data , de_len - frag1 ); de = tmpde; if ( de -> flags [ - high_sierra ] & 2 )  ei -> i_section_size = isonum_733 ( de -> size ); if ( de -> flags [ - high_sierra ] & 0x80 )  ei -> i_next_section_block = 0; ei -> i_next_section_offset = 0; inode -> i_size = isonum_733 ( de -> size ); inode -> i_size &= 0x00ffffff; if ( de -> interleave [ 0 ] )  inode -> i_size = 0; if ( de -> file_unit_size [ 0 ] != 0 )  printk ( KERN_DEBUG "ISOFS: File unit size != 0 for ISO file (%ld).\n" inode -> i_ino ) if ( ( de -> flags [ - high_sierra ] & ~2 ) != 0 )  printk ( KERN_DEBUG "ISOFS: Unusual flag settings for ISO file "(%ld %x).\n" inode -> i_ino , de -> flags [ - high_sierra ] ) inode -> i_mtime . tv_sec = inode -> i_atime . tv_sec = inode -> i_ctime . tv_sec = iso_date ( de -> date , high_sierra ); inode -> i_mtime . tv_nsec = inode -> i_atime . tv_nsec = inode -> i_ctime . tv_nsec = 0; ei -> i_first_extent = ( isonum_733 ( de -> extent ) + isonum_711 ( de -> ext_attr_length ) ); inode -> i_blocks = ( inode -> i_size + 511 ) >> 9; parse_rock_ridge_inode ( de , inode , relocated ); inode -> i_uid = sbi -> s_uid; inode -> i_gid = sbi -> s_gid; if ( S_ISDIR ( inode -> i_mode ) && sbi -> s_overriderockperm && sbi -> s_dmode != ISOFS_INVALID_MODE )  inode -> i_mode = S_IFDIR | sbi -> s_dmode; if ( S_ISREG ( inode -> i_mode ) && sbi -> s_overriderockperm && sbi -> s_fmode != ISOFS_INVALID_MODE )  inode -> i_mode = S_IFREG | sbi -> s_fmode; if ( S_ISREG ( inode -> i_mode ) )  inode -> i_fop = & generic_ro_fops; switch ( ei -> i_file_format )  inode -> i_data . a_ops = & zisofs_aops; inode -> i_data . a_ops = & isofs_aops; if ( S_ISDIR ( inode -> i_mode ) )  if ( S_ISLNK ( inode -> i_mode ) )  init_special_inode ( inode , inode -> i_mode , inode -> i_rdev ); kfree ( tmpde ); 