mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 03:27:30 -04:00
erofs: relax sanity check for tail pclusters due to ztailpacking
If the tail data can be inlined into the inode meta block, it should
be converted into a regular tail pcluster.
In principle, it should be converted into an uncompressed pcluster if
there is not enough gain to use compression (map->m_llen < map->m_plen);
but since there are various shipped images, relax the condition for
ztailpacking tail pcluster fallback instead of reporting corruption
incorrectly.
Reported-and-tested-by: Yifan Zhao <zhaoyifan28@huawei.com>
Reported-by: Alberto Salvia Novella <es20490446e@gmail.com>
Closes: https://github.com/erofs/erofs-utils/issues/51
Fixes: a5242d37c8 ("erofs: error out obviously illegal extents in advance")
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
This commit is contained in:
@@ -732,7 +732,8 @@ static int z_erofs_map_sanity_check(struct inode *inode,
|
||||
map->m_algorithmformat, EROFS_I(inode)->nid);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
if (EROFS_MAP_FULL(map->m_flags) && map->m_llen < map->m_plen) {
|
||||
if (EROFS_MAP_FULL(map->m_flags) && map->m_llen < map->m_plen &&
|
||||
map->m_la + map->m_llen < inode->i_size) {
|
||||
erofs_err(inode->i_sb, "too much compressed data @ la %llu of nid %llu",
|
||||
map->m_la, EROFS_I(inode)->nid);
|
||||
return -EFSCORRUPTED;
|
||||
|
||||
Reference in New Issue
Block a user