We need to cast before shifting sometimes.
Signed-off-by: NeilBrown <neilb@suse.de>
kfree(doh->temp);
doh->temp = NULL;
lafs_dirty_dblock(doh->new);
- if (((doh->new->b.fileaddr+1) << dir->i_blkbits) > dir->i_size) {
- i_size_write(dir, ((doh->new->b.fileaddr+1)
+ if ((((loff_t)doh->new->b.fileaddr+1) << dir->i_blkbits)
+ > dir->i_size) {
+ i_size_write(dir, (((loff_t)doh->new->b.fileaddr+1)
<< dir->i_blkbits));
lafs_dirty_inode(dir);
}
li->filesys = b->b.inode;
li->cblocks = le32_to_cpu(lai->data_blocks);
li->pblocks = li->ablocks = 0;
- li->vfs_inode.i_blocks = li->cblocks << ino->i_sb->s_blocksize_bits;
+ li->vfs_inode.i_blocks = ((blkcnt_t)li->cblocks
+ << (ino->i_sb->s_blocksize_bits - 9));
li->ciblocks = le32_to_cpu(lai->index_blocks);
li->piblocks = 0;
li->iflags = 0;
lai = LAFSI(ino);
spin_lock(&ino->i_lock);
lai->ablocks += diff;
- ino->i_blocks += diff << (fs->prime_sb->s_blocksize_bits - 9) ;
+ ino->i_blocks += (blkcnt_t)diff << (fs->prime_sb->s_blocksize_bits - 9) ;
spin_unlock(&ino->i_lock);
return 0;