#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 6830ea3a6c59..cad659c2e9cc 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -537,6 +537,9 @@ static ssize_t ext4_dio_write_iter(struct kiocb *iocb, struct iov_iter *from) bool ilock_shared = true; int dio_flags = 0; + if (ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) + ilock_shared = false; + /* * Quick check here without any i_rwsem lock to see if it is extending * IO. A more reliable check is done in ext4_dio_write_checks() with