diff options
| author | Linus Walleij <[email protected]> | 2015-01-20 10:03:07 +0000 |
|---|---|---|
| committer | Linus Walleij <[email protected]> | 2015-01-20 10:03:07 +0000 |
| commit | ee65ef609aa81539ac3792df88f04bfe29a77546 (patch) | |
| tree | 6816eaa3d45fa1078408f2ccfa5f88d32733d1d9 /fs/udf/inode.c | |
| parent | Documentation: gpio: Add APM X-Gene standby GPIO controller DTS binding (diff) | |
| parent | Linux 3.19-rc5 (diff) | |
| download | kernel-ee65ef609aa81539ac3792df88f04bfe29a77546.tar.gz kernel-ee65ef609aa81539ac3792df88f04bfe29a77546.zip | |
Merge tag 'v3.19-rc5' into devel
Linux 3.19-rc5
Diffstat (limited to 'fs/udf/inode.c')
| -rw-r--r-- | fs/udf/inode.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/udf/inode.c b/fs/udf/inode.c index c9b4df5810d5..5bc71d9a674a 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c @@ -1489,6 +1489,20 @@ reread: } inode->i_generation = iinfo->i_unique; + /* Sanity checks for files in ICB so that we don't get confused later */ + if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { + /* + * For file in ICB data is stored in allocation descriptor + * so sizes should match + */ + if (iinfo->i_lenAlloc != inode->i_size) + goto out; + /* File in ICB has to fit in there... */ + if (inode->i_size > inode->i_sb->s_blocksize - + udf_file_entry_alloc_offset(inode)) + goto out; + } + switch (fe->icbTag.fileType) { case ICBTAG_FILE_TYPE_DIRECTORY: inode->i_op = &udf_dir_inode_operations; |
