> 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.

Reply via email to