diff --git a/fs/dax.c b/fs/dax.c index 93bf2f990ace462b31dba2ee239084e112b1dfd0..7ae6df7ea1d2d04962ef4554a6a2fa1efb977006 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -119,7 +119,8 @@ static ssize_t dax_io(struct inode *inode, struct iov_iter *iter, size_t len; if (pos == max) { unsigned blkbits = inode->i_blkbits; - sector_t block = pos >> blkbits; + long page = pos >> PAGE_SHIFT; + sector_t block = page << (PAGE_SHIFT - blkbits); unsigned first = pos - (block << blkbits); long size;