staging: erofs: add two missing erofs_workgroup_put for corrupted images
As reported by erofs-utils fuzzer, these error handling
path will be entered to handle corrupted images.
Lack of erofs_workgroup_puts will cause unmounting
unsuccessfully.
Fix these return values to EFSCORRUPTED as well.
Fixes: 3883a79abd
("staging: erofs: introduce VLE decompression support")
Cc: <stable@vger.kernel.org> # 4.19+
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Link: https://lore.kernel.org/r/20190819103426.87579-4-gaoxiang25@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3407a4198f
commit
138e1a0990
@ -357,14 +357,16 @@ static struct z_erofs_collection *cllookup(struct z_erofs_collector *clt,
|
||||
cl = z_erofs_primarycollection(pcl);
|
||||
if (unlikely(cl->pageofs != (map->m_la & ~PAGE_MASK))) {
|
||||
DBG_BUGON(1);
|
||||
return ERR_PTR(-EIO);
|
||||
erofs_workgroup_put(grp);
|
||||
return ERR_PTR(-EFSCORRUPTED);
|
||||
}
|
||||
|
||||
length = READ_ONCE(pcl->length);
|
||||
if (length & Z_EROFS_PCLUSTER_FULL_LENGTH) {
|
||||
if ((map->m_llen << Z_EROFS_PCLUSTER_LENGTH_BIT) > length) {
|
||||
DBG_BUGON(1);
|
||||
return ERR_PTR(-EIO);
|
||||
erofs_workgroup_put(grp);
|
||||
return ERR_PTR(-EFSCORRUPTED);
|
||||
}
|
||||
} else {
|
||||
unsigned int llen = map->m_llen << Z_EROFS_PCLUSTER_LENGTH_BIT;
|
||||
|
Loading…
Reference in New Issue
Block a user