> A possible fix is to change the alignment check in iomap_dio_actor as follows: > > - if ((pos | length | align) & ((1 << blkbits) - 1)) > + if ((pos | align) & ((1 << blkbits) - 1)) > + return -EINVAL; > + if (length & ((1 << blkbits) - 1) && > + pos + length != iomap->offset + iomap->length) > return -EINVAL; > > Moving the alignment check from iomap_dio_actor to iomap_dio_rw isn't > that easy because iomap->bdev isn't known there. Just make the check conditional on iomap->type != IOMAP_INLINE as alignment checks on inline data don't make much sense.