diff options
| author | Christoph Hellwig <hch@lst.de> | 2025-11-24 15:00:13 +0100 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2025-11-25 10:22:19 +0100 |
| commit | 7fd8720dff2d9c70cf5a1a13b7513af01952ec02 (patch) | |
| tree | 73a41e1d251f6912d3f99038e04a50a3216f8088 | |
| parent | d7ff85d4b899e02b4b8a8ca9f44f54a06aee1b4d (diff) | |
iomap: allocate s_dio_done_wq for async reads as well
Since commit 222f2c7c6d14 ("iomap: always run error completions in user
context"), read error completions are deferred to s_dio_done_wq. This
means the workqueue also needs to be allocated for async reads.
Fixes: 222f2c7c6d14 ("iomap: always run error completions in user context")
Reported-by: syzbot+a2b9a4ed0d61b1efb3f5@syzkaller.appspotmail.com
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://patch.msgid.link/20251124140013.902853-1-hch@lst.de
Tested-by: syzbot+a2b9a4ed0d61b1efb3f5@syzkaller.appspotmail.com
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
| -rw-r--r-- | fs/iomap/direct-io.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 00ab58d55c54..38e6653fe3a6 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -734,12 +734,12 @@ __iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter, } goto out_free_dio; } + } - if (!wait_for_completion && !inode->i_sb->s_dio_done_wq) { - ret = sb_init_dio_done_wq(inode->i_sb); - if (ret < 0) - goto out_free_dio; - } + if (!wait_for_completion && !inode->i_sb->s_dio_done_wq) { + ret = sb_init_dio_done_wq(inode->i_sb); + if (ret < 0) + goto out_free_dio; } inode_dio_begin(inode); |