diff options
author | Gao Xiang <gaoxiang25@huawei.com> | 2018-09-18 22:25:33 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-09-18 16:33:42 +0200 |
commit | 37ec35a6cc2b99eb7fd6b85b7d7b75dff46bc353 (patch) | |
tree | bd60c026da12eae5d1b8621dbdebc35dd1d5b31d | |
parent | f4cd8d753a576a6a0490cae4e0ebbdee93488b8a (diff) | |
download | linux-stable-37ec35a6cc2b99eb7fd6b85b7d7b75dff46bc353.tar.gz linux-stable-37ec35a6cc2b99eb7fd6b85b7d7b75dff46bc353.tar.bz2 linux-stable-37ec35a6cc2b99eb7fd6b85b7d7b75dff46bc353.zip |
staging: erofs: fix a missing endian conversion
This patch fixes a missing endian conversion in
vle_get_logical_extent_head.
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/erofs/unzip_vle.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/staging/erofs/unzip_vle.c b/drivers/staging/erofs/unzip_vle.c index 21874b79c434..d16e3dc84765 100644 --- a/drivers/staging/erofs/unzip_vle.c +++ b/drivers/staging/erofs/unzip_vle.c @@ -1488,6 +1488,7 @@ static erofs_off_t vle_get_logical_extent_head( struct super_block *const sb = inode->i_sb; const unsigned int clusterbits = EROFS_SB(sb)->clusterbits; const unsigned int clustersize = 1 << clusterbits; + unsigned int delta0; if (page->index != blkaddr) { kunmap_atomic(*kaddr_iter); @@ -1502,12 +1503,13 @@ static erofs_off_t vle_get_logical_extent_head( di = *kaddr_iter + vle_extent_blkoff(inode, lcn); switch (vle_cluster_type(di)) { case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD: - BUG_ON(!di->di_u.delta[0]); - BUG_ON(lcn < di->di_u.delta[0]); + delta0 = le16_to_cpu(di->di_u.delta[0]); + DBG_BUGON(!delta0); + DBG_BUGON(lcn < delta0); ofs = vle_get_logical_extent_head(inode, page_iter, kaddr_iter, - lcn - di->di_u.delta[0], pcn, flags); + lcn - delta0, pcn, flags); break; case Z_EROFS_VLE_CLUSTER_TYPE_PLAIN: *flags ^= EROFS_MAP_ZIPPED; |