From: sashiko-bot@kernel.org
To: "Pavel Begunkov" <asml.silence@gmail.com>
Cc: dri-devel@lists.freedesktop.org, media-ci@linuxtv.org
Subject: Re: [PATCH v11 13/13] io_uring/rsrc: add dmabuf backed registered buffers
Date: Wed, 14 Oct 2026 11:18:50 +0000 [thread overview]
Message-ID: <sashiko-outbox-171190@kernel.org> (raw)
In-Reply-To: <4aa230df871ee275536f367087b44ebfebb88cc1.1791975048.git.asml.silence@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] io_uring/rw: dmabuf_map leaked on page waitqueue retry and cancellation
--
commit 671f0754c33400252fbbb2aab640bc25813b29e5
Author: Pavel Begunkov <asml.silence@gmail.com>
io_uring/rsrc: add dmabuf backed registered buffers
Implement dmabuf backed registered buffers. To register them, the user
should specify IO_REGBUF_TYPE_DMABUF for the regitration and pass the
desired dmabuf fd and a file for which it should be registered.
> diff --git a/io_uring/dma-buf.h b/io_uring/dma-buf.h
> new file mode 100644
> index 0000000000000..a876a9e5e272b
> --- /dev/null
> +++ b/io_uring/dma-buf.h
[ ... ]
> +static inline int io_attach_dmabuf_map(struct io_kiocb *req,
> + struct iov_iter *iter,
> + unsigned issue_flags)
> +{
> + bool nowait = issue_flags & IO_URING_F_NONBLOCK;
> + struct dma_buf_io_map *map;
> + struct io_buf_dma *bd;
> +
> + if (!IS_ENABLED(CONFIG_DMA_SHARED_BUFFER))
> + return -EOPNOTSUPP;
> + if (!(req->flags & REQ_F_DMABUF))
> + return 0;
> +
> + bd = req->buf_node->buf->priv;
> + map = dma_buf_io_get_map(bd->ctx, nowait);
> + if (unlikely(IS_ERR(map)))
> + return PTR_ERR(map);
> + req->dmabuf_map = map;
[Severity: High]
If a request is re-issued (for example, after returning -EIOCBQUEUED and being
woken up by the waitqueue), io_init_rw_fixed() is called again and
unconditionally invokes io_attach_dmabuf_map().
Does this overwrite req->dmabuf_map with a new reference without dropping the
old one, causing a memory leak of the dma_buf_io_map reference?
> + iter->dmabuf_map = map;
> + return 0;
> +}
[ ... ]
> diff --git a/io_uring/rw.c b/io_uring/rw.c
> index 432820f862514..ba0e3e7de557d 100644
> --- a/io_uring/rw.c
> +++ b/io_uring/rw.c
[ ... ]
> @@ -1231,7 +1239,10 @@ int io_read_fixed(struct io_kiocb *req, unsigned int issue_flags)
> if (unlikely(ret))
> return ret;
>
> - return io_read(req, issue_flags);
> + ret = io_read(req, issue_flags);
> + if (ret != -EIOCBQUEUED)
> + io_detach_dmabuf_map(req);
> + return ret;
[Severity: High]
When io_read() arms a page waitqueue (e.g., via io_rw_should_retry()) and
returns -EIOCBQUEUED, the dmabuf map reference is deliberately not dropped here.
If the request is later cancelled while on the waitqueue, does this cause a
memory leak? The cleanup handler invoked on cancellation via io_clean_op()
(which is io_readv_writev_cleanup() for IORING_OP_READ_FIXED) doesn't appear
to clean up req->dmabuf_map.
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/cover.1791975048.git.asml.silence@gmail.com?part=13
next prev parent reply other threads:[~2026-10-14 11:19 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-14 11:01 [PATCH v11 00/13] Add dmabuf read/write via io_uring Pavel Begunkov
2026-10-14 11:01 ` [PATCH v11 01/13] dma-buf: introduce initial file I/O infrastructure Pavel Begunkov
2026-10-14 11:13 ` sashiko-bot
2026-10-14 12:30 ` Christian König
2026-10-14 13:06 ` Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 02/13] iov_iter: add iterator type for dmabuf maps Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 03/13] block: always adjust bi_offset on bio_advance_iter Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 04/13] block: introduce dma map backed bio type Pavel Begunkov
2026-10-14 11:21 ` sashiko-bot
2026-10-14 13:03 ` Pavel Begunkov
2026-10-14 13:15 ` Christoph Hellwig
2026-10-14 16:43 ` Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 05/13] block: add dma-buf support for raw bdev Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 06/13] nvme-pci: rename nvme_pci_sgl_set_data to nvme_pci_dma_iter_set_sgl Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 07/13] nvme-pci: implement dma-buf backed requests Pavel Begunkov
2026-10-14 11:26 ` sashiko-bot
2026-10-14 13:16 ` Christoph Hellwig
2026-10-14 11:02 ` [PATCH v11 08/13] nvme-pci: add SGL support for the dmabuf path Pavel Begunkov
2026-10-14 11:23 ` sashiko-bot
2026-10-14 13:16 ` Christoph Hellwig
2026-10-14 11:02 ` [PATCH v11 09/13] io_uring/rsrc: introduce buf registration structure Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 10/13] io_uring/rsrc: extend buffer update Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 11/13] io_uring/rsrc: add uncloneable regbuf flag Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 12/13] io_uring/rsrc: add regbuf import flags Pavel Begunkov
2026-10-14 11:02 ` [PATCH v11 13/13] io_uring/rsrc: add dmabuf backed registered buffers Pavel Begunkov
2026-10-14 11:18 ` sashiko-bot [this message]
2026-10-14 13:40 ` Jens Axboe
2026-10-14 13:43 ` [PATCH v11 00/13] Add dmabuf read/write via io_uring Jens Axboe
2026-10-14 14:37 ` Anuj gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=sashiko-outbox-171190@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=asml.silence@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=media-ci@linuxtv.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.