diff options
Diffstat (limited to 'fs/erofs/inode.c')
| -rw-r--r-- | fs/erofs/inode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index a188c570087a..e0c47da4f09e 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -191,8 +191,9 @@ static int erofs_read_inode(struct inode *inode) err = -EFSCORRUPTED; goto err_out; } else { - inode->i_blocks = le32_to_cpu(copied.i_u.blocks_lo) << - (sb->s_blocksize_bits - 9); + inode->i_blocks = (le32_to_cpu(copied.i_u.blocks_lo) | + ((u64)le16_to_cpu(copied.i_nb.blocks_hi) << 32)) << + (sb->s_blocksize_bits - 9); } if (vi->datalayout == EROFS_INODE_CHUNK_BASED) { |
