fscrypt: pass a real sector_t to fscrypt_zeroout_range_inline_crypt
While the pblk argument to fscrypt_zeroout_range_inline_crypt is declared as a sector_t it actually is interpreted as a logical block size unit, which is highly unusual. Switch to passing the 512 byte units that sector_t is defined for. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Eric Biggers <ebiggers@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
f7ba87dfa8
commit
c22756a997
|
|
@ -48,7 +48,7 @@ bool fscrypt_decrypt_bio(struct bio *bio)
|
|||
EXPORT_SYMBOL(fscrypt_decrypt_bio);
|
||||
|
||||
static int fscrypt_zeroout_range_inline_crypt(const struct inode *inode,
|
||||
pgoff_t lblk, sector_t pblk,
|
||||
pgoff_t lblk, sector_t sector,
|
||||
unsigned int len)
|
||||
{
|
||||
const unsigned int blockbits = inode->i_blkbits;
|
||||
|
|
@ -67,8 +67,7 @@ static int fscrypt_zeroout_range_inline_crypt(const struct inode *inode,
|
|||
|
||||
if (num_pages == 0) {
|
||||
fscrypt_set_bio_crypt_ctx(bio, inode, lblk, GFP_NOFS);
|
||||
bio->bi_iter.bi_sector =
|
||||
pblk << (blockbits - SECTOR_SHIFT);
|
||||
bio->bi_iter.bi_sector = sector;
|
||||
}
|
||||
ret = bio_add_page(bio, ZERO_PAGE(0), bytes_this_page, 0);
|
||||
if (WARN_ON_ONCE(ret != bytes_this_page)) {
|
||||
|
|
@ -78,7 +77,7 @@ static int fscrypt_zeroout_range_inline_crypt(const struct inode *inode,
|
|||
num_pages++;
|
||||
len -= blocks_this_page;
|
||||
lblk += blocks_this_page;
|
||||
pblk += blocks_this_page;
|
||||
sector += (bytes_this_page >> SECTOR_SHIFT);
|
||||
if (num_pages == BIO_MAX_VECS || !len ||
|
||||
!fscrypt_mergeable_bio(bio, inode, lblk)) {
|
||||
err = submit_bio_wait(bio);
|
||||
|
|
@ -132,7 +131,7 @@ int fscrypt_zeroout_range(const struct inode *inode, pgoff_t lblk,
|
|||
return 0;
|
||||
|
||||
if (fscrypt_inode_uses_inline_crypto(inode))
|
||||
return fscrypt_zeroout_range_inline_crypt(inode, lblk, pblk,
|
||||
return fscrypt_zeroout_range_inline_crypt(inode, lblk, sector,
|
||||
len);
|
||||
|
||||
BUILD_BUG_ON(ARRAY_SIZE(pages) > BIO_MAX_VECS);
|
||||
|
|
|
|||
Loading…
Reference in New Issue