| From bb49c6fa8b845591b317b0d7afea4ae60ec7f3aa Mon Sep 17 00:00:00 2001 |
| From: Stefano Garzarella <sgarzare@redhat.com> |
| Date: Fri, 11 Feb 2022 10:01:36 +0100 |
| Subject: block: clear iocb->private in blkdev_bio_end_io_async() |
| |
| From: Stefano Garzarella <sgarzare@redhat.com> |
| |
| commit bb49c6fa8b845591b317b0d7afea4ae60ec7f3aa upstream. |
| |
| iocb_bio_iopoll() expects iocb->private to be cleared before |
| releasing the bio. |
| |
| We already do this in blkdev_bio_end_io(), but we forgot in the |
| recently added blkdev_bio_end_io_async(). |
| |
| Fixes: 54a88eb838d3 ("block: add single bio async direct IO helper") |
| Cc: asml.silence@gmail.com |
| Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> |
| Reviewed-by: Ming Lei <ming.lei@redhat.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Link: https://lore.kernel.org/r/20220211090136.44471-1-sgarzare@redhat.com |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| block/fops.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/block/fops.c |
| +++ b/block/fops.c |
| @@ -289,6 +289,8 @@ static void blkdev_bio_end_io_async(stru |
| struct kiocb *iocb = dio->iocb; |
| ssize_t ret; |
| |
| + WRITE_ONCE(iocb->private, NULL); |
| + |
| if (likely(!bio->bi_status)) { |
| ret = dio->size; |
| iocb->ki_pos += ret; |