Re: [PATCH] iomap: allocate s_dio_done_wq for async reads as well

Darrick J. Wong
2025-11-24T16:32:10Z

On Mon, Nov 24, 2025 at 03:00:13PM +0100, Christoph Hellwig wrote:
> 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>
> Tested-by: syzbot+a2b9a4ed0d61b1efb3f5@syzkaller.appspotmail.com

Heh, ooops. :/

Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>

--D

> ---
> fs/iomap/direct-io.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c
> index d4e2e328d893..8e273408453a 100644
> --- a/fs/iomap/direct-io.c
> +++ b/fs/iomap/direct-io.c
> @@ -738,12 +738,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);
> --
> 2.47.3
>
>