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: 3883a79abd02 ("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…
x
Reference in New Issue
Block a user