]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iomap: allocate s_dio_done_wq for async reads as well
authorChristoph Hellwig <hch@lst.de>
Mon, 24 Nov 2025 14:00:13 +0000 (15:00 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:15:06 +0000 (10:15 +0100)
commit 7fd8720dff2d9c70cf5a1a13b7513af01952ec02 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/iomap/direct-io.c

index aba9d5ce819d08077a0bc13226003e96c00f3691..52dd8c9c3f6f0dbbb8fecc25ae5d8ca202791d5e 100644 (file)
@@ -674,12 +674,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);