Re: [PATCH 2/3] fs/ext2/inode: Fix a type cast error for fsdax
From: Huaisheng Ye
Date: Mon Jul 02 2018 - 02:24:44 EST
---- On Mon, 02 Jul 2018 03:26:00 +0800 Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote ----
> On Sun, Jul 01, 2018 at 02:18:47PM +0800, Huaisheng Ye wrote:
> > From: Huaisheng Ye <yehs1@xxxxxxxxxx>
> > The type of offset within struct iomap is loff_t, which represents
> > file offset of mapping.
> > In ext2_iomap_begin, iomap->offset shall be given a type cast as
> > loff_t instead of u64.
> Why is it an error? loff_t is uniformly typedefed to long long.
> In which case the second variant is different from the first one
> *and* does not step into nasal demon territory?
Sorry for my inaccuracy.
The type of iomap->offset is loff_t, is it better to cast first_block
to loff_t, then do the left shift operation?
> > - iomap->offset = (u64)first_block << blkbits;
> > + iomap->offset = (loff_t)first_block << blkbits;